精华内容
下载资源
问答
  • 本教程是微信公众号添加后端配置 消息模版,和通过co-wechat-api调用公众号接口开发阶段的配置。 1,需要下载内网穿透工具ngrokhttps://www.ngrok.cc/ 下载安装教程可以参考 简书另一篇文章利用Sunny-Ngrok...

    本教程是微信公众号添加后端配置 消息模版,和通过co-wechat-api调用公众号接口的开发阶段的配置。

    1,需要下载内网穿透工具ngrok https://www.ngrok.cc/

     


    下载安装教程可以参考 简书另一篇文章利用Sunny-Ngrok实现内网穿透

     

    安装

     

    此时已经完成一大半

    2,然后配置公众号的测试号


    https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

     

     

     

     

    3,然后配置公众号的服务器配置

     

     

     

    成功之后

     

     

    4,写代码测试

     

     

     

    在middleware文件目录下新建一个wechat.js文件
    代码,这一步是根据网上一位同学的代码,具体链接找不到了,不好意思

     

    // app/middleware/wechat.js
    const wechat = require('co-wechat')
    
    module.exports = (options, app) => {
      return wechat(options).middleware(async(message, ctx) => {
        // TODO
        const { MsgType, Content } = message
        if (MsgType === 'text') {
          let reply
          switch (Content) {
            case '12345':
              reply = '上山打老虎'
              break
            case 'kiki':
              reply = '是我媳妇'
              break
            default:
              const msgs = [
                '我媳妇老漂亮了',
                '我媳妇会做饭',
                '我媳妇会煎药',
                '我媳妇吃的可多了',
                '我媳妇可能睡了',
                '我媳妇叫kiki',
                '我媳妇会打太极拳',
                '我媳妇总掉头发',
                '我媳妇可爱哭了',
                '我媳妇有点二'
              ]
              const rand = Math.floor(Math.random() * msgs.length)
              reply = msgs[rand]
          }
          return reply
        }
        return '欢迎光临'
      })
    }
    

    然后在路由里面配置路由

     

    // 微信
      app.get('/wechat', wechat)
      app.post('/wechat', wechat)
    

    配置号之后,重启服务
    刚才的测试账号,或者直接进入你自己的公众号,输入消息

     

    image.png

     

    输入12345
    就可以出来上山大老虎了
    第一个是我接的第三方图灵机器人

    这一步完成了

    然后配置,接口调用微信开放接口获取用户信息
    首先配置路由

     

    app.get('/weChatOAuth', app.controller.weChatOAuth.getOAuth)
      app.get('/getFollowers', app.controller.weChatOAuth.getFollowers)
      app.get('/getInfo', app.controller.weChatOAuth.getInfo)
    

    在controller 新建一个weChatOAuth.js文件

     

    'use strict'
    const Controller = require('egg').Controller
    const WechatAPI = require('co-wechat-api')
    
    const weChatOAuth = {
      appId: '你自己的',
      secret: '你自己的',
      token: 'webrabbit'
    }
    const tokenCache = {
      access_token: '',
      updateTime: Date.now(),
      expires_in: 7200
    }
    const api = new WechatAPI(
      weChatOAuth.appId,
      weChatOAuth.secret,
    )
    class weChatOAuthController extends Controller {
      async getOAuth() {
        const { ctx } = this
        const param = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${weChatOAuth.appId}&secret=${weChatOAuth.secret}`
        const res = await ctx.curl(param, {
          dataType: 'json'
        })
        Object.assign(tokenCache, res.data, {
          updateTime: Date.now()
        })
        ctx.body = res.data
      }
      async getFollowers() {
        const { ctx } = this
        const url = `https://api.weixin.qq.com/cgi-bin/user/get?access_token=${tokenCache.access_token}`
        const res = await ctx.curl(url, {
          dataType: 'json'
        })
        ctx.session.openid = await res.data.data.openid[0]
        ctx.body = res.data
      }
      async getInfo() {
        const { ctx } = this
        const res = await api.getUser({ openid: ctx.session.openid, lang: 'en' })
        console.log(await api.getTags())
        // res = await api.batchGetUsers(res.data.openid, 'zh_CN')
        ctx.body = res
      }
    }
    
    module.exports = weChatOAuthController
    
    

    前两个接口是传统公众平台上的api
    后面的getInfo 是用的co-wechat-api 插件掉的,更方便了
    别忘了

     

    npm install --save co-wechat-api
    

    然后调用接口就会获取信息

     

    image.png

    当getInfo这样写时

     

    async getInfo() {
        const { ctx } = this
        let res = await api.getFollowers() // 获取测试号的关注者的信息,刚才配置测试号,扫码关注的人
        res = await api.batchGetUsers(res.data.openid, 'zh_CN')
        ctx.body = res
      }
    

     

    现在就 完成了,后端调用开放平台公众号接口的配置
    附上co-wechat-api文档地址 http://doxmate.cool/node-webot/co-wechat-api/api.html#api_api_user

    如果对阁下有帮助,请点赞,关注,也不排除小小的大赏谢谢😂😂😂

    简书地址https://www.jianshu.com/p/5290c47dacf9

    展开全文
  • Java 上传文件 ,后端接口大体逻辑。 上传文件是我们日常开发过程中,经常遇到的一个场景,也是我们后端程序猿必须要会的,今天周五,事情做完,离下班还有点时间,来写写大体思路。 本文顺序将主要讲述的是...

    Java 上传附件 ,后端接口大体逻辑。

    所谓的附件,即包括我们常见的图片、各类文档、压缩包等等

    上传附件是我们日常开发过程中,经常遇到的一个场景,也是我们Java后端程序猿必须要会的,今天周五,事情做完,离下班还有点时间,来水水大体思路。

    本文顺序将主要讲述的是 controller 层和 service层的数据逻辑处理 ,废话不多说,开始我们的水贴,啊不,是技术之旅。

     

    -----------------------------------------------  系统提示:后端正在开启上传接口 ----------------------------------------------- 

     

    controller层

            /**
             * 上传认证信息文件
             * @param request
             * @return
             */
            @RequestMapping(value="/uploadFile",method = RequestMethod.POST,produces= MediaType.APPLICATION_JSON_VALUE)
            public Result<Boolean> uploadAuthAttachment(@RequestParam("customerId")String customerId,
                    @RequestParam MultipartFile[] files, HttpServletRequest request, HttpServletResponse response) {
                return getResult(Result.OK, iUploadFileService.uploadAuthAttachment(customerId, files, request, response));
            }

    返回值 Result<T> 这个是我们项目中封装的一个返回对象,可以根据实际业务进行修改;

    customerId 为前端传入的客户ID,是除了附件信息外的附带参数;

    files 是当前上传的附件对象,因为当前参数文件对象是数组,所以支持同时上传多个的;

    service层

    service 接口

            /**
             * 上传附件示例
             * @return
             */
            public Boolean uploadAuthAttachment(String customerId, MultipartFile[] files, HttpServletRequest request, HttpServletResponse response);

    service 接口实现类 impl

        /**
         * 上传附件示例
         * @return
         */
        public Boolean uploadAuthAttachment(String customerId, MultipartFile[] files, HttpServletRequest request, HttpServletResponse response){
            try{
                /**
                 * 省略附件上传前的业务处理逻辑
                 * 比如结合传入的其他参数(例如当前的 customerId) 做一些数据有效性校验等
                 */
    
                //附件保存逻辑
                    String filename=null;
                    if(files==null||files.length<1){
                        throw new Exception("文件未上传");
                    }else{
                        String rootOriPath = "服务器中的保存路径";
                        //循环上传上来的附件数组,保存到服务器指定的路径下
                        for (int i = 0; i < files.length; i ++ ) {
                            MultipartFile myfile=myfiles[i];
                            //服务器中存储的文件名
                            filename=new StringBuilder().append(System.nanoTime()).append(new Random().nextInt(100)).append(".").append(myfile.getContentType().substring(myfile.getContentType().indexOf("/") + 1)).toString();
                            File file = new File(rootOriPath);
                            if(!file.exists()){
                                file.mkdirs();
                            }
                            //文件保存至服务器指定路径下
                            org.apache.commons.io.FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(rootOriPath, filename));
    
                            /***
                             * 省略上传后的逻辑,
                             * 比如保存附件信息至附件表中,建立附件和我们业务的关联关系等
                             *
                             * MultipartFile 中可以获取到的一些常用的信息:
                             * 文件大小:myfile.getSize()
                             * 文件类型:myfile.getContentType()
                             * 文件原始名称:myfile.getOriginalFilename()
                             *
                             * 其余信息的获取方法可以通过百度 MultipartFile 找到对应的Api
                             *
                             */
                        }
                    }
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                throw new SystemException("上传附件出现异常!" + e);
            }
        }

    前端调用时,需要传入附带参数 customerId,文件对象 files,如下图 PostMan请求示例所示:

    以上为 文件上传接口 后端大体的逻辑及思路“实现”。

    当然,这只是附件上传的简陋Demo版本,主要是为了展现后端附件上传的大体思路和部分通用逻辑处理,具体开发过程中肯定还需要结合 接口访问权限、数据校验、设置允许上传的附件大小、附件压缩等等安全性和细节性的处理,那些需要根据不同的业务场景做出不同的处理实现,本文目的主要为展示Java附件上传后端接口的一套流程,对此就不再一一细节展开,望谅解。

    展开全文
  • 写一个接口文档(别指望写得多好,差不多就可以) 照着自己的数据库、自己的文档,写一个代码的“基本设计(注释)” 照着“基本设计”完成coding coding中一定会发现:数据库、文档 的错误,修正它们。 完成。 ...
    1. 设计数据库表结构
    2. 写一个接口文档(别指望写得多好,差不多就可以)
    3. 照着自己的数据库、自己的文档,写一个代码的“基本设计(注释)”
    4. 照着“基本设计”完成coding
    5. coding中一定会发现:数据库、文档 的错误,修正它们。
    6. 完成。

    基本就是 NO.4,NO.5,循环,一直到完成。

    转载于:https://www.cnblogs.com/kevin922/p/3628207.html

    展开全文
  • 这半个月断断续续在学习用PHP的ThinkPHP框架开发后端API。现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性。 一、流程概要 基本是这么一个流程,略过环境搭建: 整理清楚有...

    这半个月断断续续在学习用PHP的ThinkPHP框架开发后端API。现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性。


    一、流程概要

    基本是这么一个流程,略过环境搭建:

    1. 整理清楚有哪些接口
    2. 设计数据表
      • 初步梳理是一对一,一对多,还是多对多
    3. 编写验证器
    4. 编写全局异常类(AOP思想)
    5. 定义路由路径
    6. 建立控制器类
    7. 建立模型类
      • 用ORM,所以建立和数据表对应的模型类
    8. 控制器调用模型,模型调用数据库,完成接口编写

    二、具体说明

    梳理好有哪些接口后,就开始设计数据表:

    数据表会随着代码的编写做些调整和改变。

    值得注意的一点,当有两张表之间的关系是多对多时,记得设计一张中间表存放两张表各自的id。

    设计好数据表后,开始编写一些工具类,有助于提高编写业务代码时的效率。

    首先是验证器(validate)。

    TP5框架自带验证器类,我们要做的则是继承这个验证器类,然后根据具体的接口做扩展即可。

    创建一个验证器基类,把通用的方法放在里面:

    goCheck()方法是所有具体验证器都会调用的方法,各个具体验证器只是会重写一些验证规则和验证返回信息而已。

    在goCheck()方法里,实例化了Request类。这样做的目的是获取API被调用时,调用方传递的参数。获取到参数后,自然就是对这些参数进行验证了。check()方法会调用各个具体验证器里设置的验证规则函数进行检测。

    然后是全局异常类(global exception)。

    同样的,TP5框架自带了一个异常类,我们就创建一个异常基类继承它。

    随后需要做的则是根据具体的接口重写HTTP状态码,错误消息和错误码即可。

    至于错误码的定义,则是自己设计一套规范。

    搭建好验证器和全局异常类后,我们只需要在每个接口的函数里面调用他们就行了:

    好,至此一些基础的东西就搭建好了,下面开始编写接口代码。

    首先定义路由路径:

    在route.php里,引入Route类,定义路径即可。路径里的变量用:号+变量名表示,路径里的变量由路径末尾指定的函数接收,这个函数定义在控制器相对应的类里面。

    比如id这个变量:

    如上图,在控制器里,当拿到调用方通过路由路径传过来的参数后,我们就调用模型,把参数传过去,模型处理具体的数据库调用。

    这里也是一个需要注意的点,控制器尽量只做连接的事情,不做具体的操作。

    然后,在建立了控制器后,顺理成章,也需要建立对应的模型。

    TP5同样自带了Model类,然后我们也定义自己的模型基类,当然也是继承TP5的模型类:

    模型基类自然也是定义较为通用的方法。比如上图的例子里,定义了一个返回图片前缀链接的方法,不同的接口但又跟图片调用有关的话,就会用到这个方法来拼接图片URL。

    这里也有个注意的点。当我们需要创建全局的变量时,可以在application目录下创建extra目录文件,然后创建setting.php文件,在里面返回一个关联数组即可:

    随后的调用如上图模型基类里的prefixImgUrl方法里展示的一样,config函数,参数传入文件名加关联数组的key值,这样就可以获取到了:

    回到模型上来,每个接口会有自己的模型类,这个模型类对应一张数据表,比如:

    Banner模型类由于是通过模型基类继承了TP5的Model类,我们需要做的就是重写一些属性,来适应这个具体的接口,比如重写$hidden属性,定义这个接口返回的哪些字段我们是要隐藏的。

    然后则是ORM的重点之一,调用数据表所对应的模型类。比如items方法里,通过hasMany()这个方法确定了Banner模型和BannerItem模型的关系。然后在getBannerById()方法里,调用了ORM用来操作数据的方法,这是对原生操作数据库语句的封装,然后ORM会返回模型对象,这个对象除了带有数据库数据外,还会带有一些属性和方法,用来操作数据。这是ORM对比原生SQL语句的一个优势。

    最后,控制器调用模型的getBannerById()方法,获取到了数据,再作为接口的返回值传递给接口调用者。这样就完成了一次接口的编写。

    三、总结

    至此做了一个简要的后端API开发流程记录。其中还有很多细节没有提到,只是简略的描述了一个过程,不过这也不是这次记录的主要目的。这次的目的还是对这一周多学习的一个记录。

    通过这次学习后端API开发,更加巩固了我对面向对象编程里思想的理解和运用。

    通过继承和重写,可以把代码写得更干净简洁。

    类,实例,属性,方法,怎么看待他们,然后操作他们,通过这次学习又加深了很多认识。

    展开全文
  • Django项目QQ登录后端接口实现 QQ登录,亦即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目。 1.准备工作的步骤: QQ登录网站开发流程准备工作: 1.打开下列腾讯...
  • 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性。而这要求前端开发进度和后端进度保持基本一致,任何一方的进度跟不上,都无法及时完成功能模块的...
  • 参考: 微信官方文档 * 小程序登录流程 ...后端调用 auth.code2Session 接口,换取 用户唯一标识OpenID 和 会话密钥 session_key。 开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前...
  • 微信小程序后端开发流程根据官网总结为两个步骤1、前端调用 wx.login 返回了code,然后调用wx.getUserInfo获取到用户的昵称 头像微信小程序后端接口开发controller层public class OauthController {@...
  • 前端:1.布局加样式 div+css 2.页面动态效果及特效 javascript 以上使用是市面上的大部分前端框架可迅速完成,并且美观,生动,如ElementUI,layui,Mint ...常用框架thinkphp,laravel等,或者通过cms进行接口开发。 ...
  • 场景:微信小程序调用 wx.downloadFile() API 下载文件,PHP后端做处理并返回文件流程流程: 1.小程序展示需要下载的文件列表; 2.点击下载后请求PHP接口,携带一个参数为想要下载的文件名; 3.在PHP接收该参数,...
  • 上周还可以不紧不慢的开发功能和学习技术,本周突然就被卷入到一个紧急业务的开发之中,要求在这周五开发完成一个全新的后端业务,具体包括制定上下游服务接口、设计后端系统业务流程开发代码和测试通过,以便在...
  • 在需求文档完成后,测试人员...掌握核心业务流程:在前期项目中 编写需求文档 这段时间中,应该对项目有一个基本的了解,并对项目的核心业务有一个明确的认识。往往我对核心业务掌握的不够全面,导致后期代码编写...
  • 目录1 前后端分离开发1.1网站后台的部分采用前后端分离方式1.2企业开发流程2 后端接口开发规范2.1开发原则2.2 开发步骤2.3 接口版本规范说明2.4 接口通用规范 1 前后端分离开发 1.1网站后台的部分采用前后端分离...
  • 2、项目开发流程 (1)搭建项目:借助vue-cli脚手架工具,具体请参考博客: ...; 由于项目存放在本地电脑E盘VueTest目录下, cd E:\VueTest 图1:切换项目存放目录、vue-cli搭建初始项目 通过脚手架vue-cli工具...
  • 自己写的一个,因为创建的文件比较多,后来发现项目中Hutool这个工具类中,已经做好了这块的集成实现,可以很轻松的调用就可以了,所以今天就简单讲一下具体的流程。 首先要在pom.xml中添加依赖,代码如下: ...
  • 开发流程及步骤 1.打开官方文档,下载电脑网站支付java版demo; 打开demo,目录结构如下:     我们发现其实就是个web项目,那么既然支付宝为我们做好了测试网页,我们接下来只用测试就可以了。 打开...
  • 从iOS开发后端API开发(上)

    千次阅读 2017-07-11 17:41:14
    本篇文章内容:主要讲述鄙人最初进行后台接口开发的大致流程。(适合新手看)前言:最近两个月,由于iOS小组暂时没有任务可做,所以经理就给我安排了一个后台的工作—-写接口.刚开始听到这个噩耗,内心是崩溃的,但是回头...
  • 能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。适合中小型前后端分离的项目,尤其是互联网创业项目和企业自用项目。通过自动化API,前端可以定制任何数据、任何结构!大部分HTTP请求后端再也不用写接口了...
  • 详解如何开发 H5 页面以及微信相关接口开发。 详解如何部署开发好的前端代码(Nginx 部署,前后端分离模式部署),后端部署利用简便式(Spring Boot 快速部署)详细讲解完整部署流程。 详解域名解析如何对应 IP 让你...
  • 良好的后端开发规范

    2020-12-31 11:28:33
    1.4 后端开发流程 5 数据库规范 5 2.1数据库表命名规范 5 2.2数据库公有字段名称(应用层) 5 2.3 数据库建表语句规范 5 项目工程规范 5 3.1 工程命名规范 5 3.2 打包规范 6 3.3 工程端口规范 6 3.4 接口调用路径...
  • Flask 前端页面的后端刷新流程

    千次阅读 2018-10-18 19:15:34
    后端刷新页面的流程 对于服务器开发工程师来说,前端页面的刷新分为后端刷新和前端刷新。后端刷新的实现是通过模板+数据的方式实现的;前端刷新的实现是通过jQuery的Ajax + jQuery动态加载HTML,CSS的方式实现的。 ...
  • 一、准备工作 1、参考... 2、下载官网前端开发工具 https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=1476434678461 3、其他的接口及文档请参考 https...
  • java微信支付后端开发

    2018-07-05 18:20:43
    在上篇文章,已经介绍了微信支付的相关申请流程:点击打开链接下面是关于微信支付,后端代码。博主使用的是java。其他语言如:php、python、.net等可以参考思路流程一、微信支付大概流程: 1.用户选择商品---&...
  • 对于服务器开发工程师来说,前端页面的刷新分:1、后端刷新2、前端刷新1、后端刷新的实现是通过模板+数据的方式实现的2、前端刷新是通过jQuery的Ajax +jQuery...1、后端刷新页面的流程1.1实现服务器的API接口文档...
  • wsgi协议:一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。 利用它,web.py或bottle或者django等等的python web开发框架,就可以轻松地...
  • 后端开发菜鸟日记-八

    2018-10-21 21:24:10
     在流程结束的时候,在调用接口,将数据回传,并将附件上传到FTP服务器,并根据当天时间新建一个文件夹,并把失败的做一个标记,并每天定时再推一次。  经过两天的开发,已经完成,数据拿到,展示,回传,上传FTP...
  • Api全称:前后台交互API接口 重要概念 1.API(请求:请求地址url...1:熟悉一个项目的开发流程 2:模块化,组件化,工程化开发 3:初始化项目 4:模拟后端数据,实现前后端分离开发 5:es6+eslint开发 6:项目优化 ...
  • 后端入门之Python实现一个简单接口编写

    万次阅读 多人点赞 2019-04-28 13:57:23
    最近好像要转向后端了,故想提前学习下,实现一个简单接口编写,熟悉一下编写接口流程和框架。写这个主要是记录一下自己的学习过程,以便后面温习。在Python实现一个简单接口编写之前需要了解一些后端开发的一些...
  • IOS授权登录流程与微信授权登录大同小异,唯一区别的在于需要调用苹果api获取公钥,接口地址为:https://appleid.apple.com/auth/keys。 首先是IOS APP端拿到identifyToken交给后端后端拿到identifyToken后,首先...
  • 用到的技术:1.nginx ...4.AngularJS 模块化开发,非必要流程1.请求页面:http://localhost/lorenzo/index.html 2.返回页面index.html,包含html css js 3.Ajax 调用接口:http://localhost:80/lorenzo/api/list.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 826
精华内容 330
关键字:

后端接口开发流程