微信小程序通过jsonrpc调用python服务端接口

微信小程序通过jsonrpc调用python服务端接口

月光魔力鸭

2021-01-16 23:36 阅读 332 喜欢 0 jsonrpc

与python后端进行联调,后端协议为jsonrpc ,这里简单记录下jsonrpc的通用请求函数,并附带几个栗子。

jsonrpc 这里以2.0进行记录

JSON-RPC是一个无状态且轻量级的RPC协议,其传输内容以JSON方式,相对于一般的HTTP请求通过URI调用远程服务器,JSON-RPC直接在内容中定义了要调用的函数名称(如 {“method”: “getUser”}),对于开发者来说非常的方便。Bitcoin和Ethereum都支持JSON-RPC通过客户端直接调用节点上的函数或方法。

JSON-RPC请求

JSON-RPC 2.0和1.0之间一些差异,我们这里介绍2.0的使用,一个JSON-RPC的请求必须包含以下4个字段。

在微信小程序中的请求函数

/**
   * 封装通用请求,jsonrpc
   * @param {String} url server请求地址
   * @param {Object} params jsonrpc 附带params数据
   */
  request : function(url,params,cookie){
    let _util = this;
    return new Promise((r,j)=>{
      let header = {
        'content-type': 'application/json',
        'Cookie' :cookie,
        'x-requested-with': 'XMLHttpRequest'
      }
      wx.request({
        url: config.serverHost+url,
        method: 'POST',
        data: {
          jsonrpc: "2.0",
          method: "call",
          params: params,
        },
        header: header,
        success: function (res) {
          //判断正常返回数据,如果不符合,则直接提示报错即可。
          res = res.data;
          if(res.error && res.error.data && res.error.data.message){
            _util.msg(res.error.data.message);
          }
          r(res);
        },
        fail : function(err){
          console.log(`请求失败:[${url}] : ${err.message}`)
          //如果请求失败后,需要将当前的数据进行记录日志,然后发送至server
          _util.msg('当前请求失败,请退出后重试')
          r(null);
        }
      })
    })
  },

调用栗子A

let requestContext = {
  lang : 'zh_CN',tz : false,uid : 2,allowed_company_ids:[1],bin_size:true
};
...
/**
   * 保存加梯表单
   */
  saveForm: async function(formData){
    let cookie = await util._getCookie();//获取之前保存的cookie
    let params = {
      //按照顺序写入参数
      args : [formData.name,formData.phone,formData.address,formData.community,formData.location],
      kwargs : {context : requestContext},
      method : 'submit',
      model : 'see.happy.lead'
    }
    let res = await util.request(config.url,params,cookie);
    return res && res.result ? true : false;
  },

一直没接触python,对于jsonrpc 也没怎么用过,都是跟java nodejs 做对接。 个人感觉这种方式对于后端来说会减少不少工作。

转载请注明出处: https://chrunlee.cn/article/mini-program-jsonrpc-python.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
最近有系统需要知道性能瓶颈,尝试使用jmeter对重要接口进行并发测试,确定能否支撑一定的用户数量。
通过frp做穿透实现https 访问本地http项目。
之前看知乎相中了一个想法,给宝宝做一个站,上传生活的日常照片啊、视频之类的,存储肯定是在自己家里,然后做个穿透这样..开始做的时候又想着是时候接触下这些东西了,虽然公司都一点不用,但是自己没事接触下拓展下也是好的。
浏览网页的时候经常会有文本无法选中,无法复制的情况,这里简单说个简单的方法,不需要下载什么东西,也不用安装什么软件、插件、油猴啥的都不需要。
最开始其实只是网站的一个小改版,导致的需要发送邮件的功能,本身功能不复杂,不做工具的话,几行代码应该就可以搞定的.. 不过后来想想,这个功能应该还是有一定的小需求的,就做成了工具。
扩展程序中会有需要请求外部接口获取数据的时候,如果直接在JS中写的话,会跨域,但是谷歌扩展程序支持这种情况,只需要配置一下即可。
需求:可能会有在页面加载的时候想执行某个js,例如统计页面的DOM等等。
功能来源于客户需求。客户有需求想把班级内所有学生的错题本生成pdf文档下载下来... 目前没有做这个功能,只有页面,还好chrome浏览器有保存pdf的功能,但是一想到这么多的学生,这么多的学科、以及这么多的参数... 还好有puppeteer