当前位置: 首页 > 工具软件 > jsonrpc4j > 使用案例 >

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

陈渊
2023-12-01

与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: 指定JSON-RPC的版本,必须设置为2.0

id: 调用标识符,用于标示一次远程调用过程,值必须包含一个字符串、数值。

method: 所要调用方法名称的字符串

params: 方法传入的参数,若无参数则传入空[]

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

/**

* 封装通用请求,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

接口地址为:/web/dataset/call_kw/see.happy.lead/submit

接口作用为: 保存表单数据

函数调用为:

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 做对接。

个人感觉这种方式对于后端来说会减少不少工作。

 类似资料: