odoo这个开源ERP,允许外界使用两种RPC(远程过程调用):xmlrpc和jsonrpc,实现增删改查。实际上Odoo 的 WEB 前端是完全通过接口和后端通讯的,几乎实现了前后端分离。xmlrpc是老版本odoo用的多,保留是为了保持兼容性。
===========================xmlrpc实现访问=============================
关于xmlrpc在odoo官网可以找到:
https://www.odoo.com/documentation/15.0/werbservices/odoo.html
关于python的xmlrpclib,网址是:
20.23. xmlrpclib — XML-RPC client access — Python 2.7.18 documentation
在windows下,cmd窗口命令用以下语句可获得xmlprc的版本号:
要在微信小程序中实现以上的功能,代码如下:
wx.request({
method: 'POST', //对xmlrpc来说,GET或者POST都可以
url: 'http://localhost:8069/xmlrpc/2/common',
//这里选择访问xmlrpc/2/common,不需要验证,方便测试
data: "<?xml version='1.0'?>\n<methodCall>\n<methodName>version</methodName>\n<params>\n</params>\n</methodCall>\n", //xmlrpc的数据格式
header: {
'content-type': 'text/xml' //xmlrpc的内容类型要这么写
},
success (res) {
console.log(res.data) //成功获得值后的操作
}
})
========================jsonrpc实现访问comon/vsersion========================
而要用jsonrpc实现同样的访问,就需要做一点修改
wx.request({
method: 'POST', //jsonrpc必须使用POST
url: 'http://localhost:8069/jsonrpc', //留意此处地址变化 ,不需要验证,方便测试
data: {
"jsonrpc": "2.0", //必要格式,参考下面的网址https://www.odoo.com/documentation/15.0/developer/howtos/backend.html?highlight=jsonrpc
"method": "call", //必要格式,参考下面的网址
"params": {"service": "common", "method": "version", "args": ''}, //args必须有且不能是null
"id": null, //必要格式,参考下面的网址
},
header: {
'content-type': 'application/json' // 留意此处变化
},
success (res) {
console.log(res.data)
}
})
========================jsonrpc实现访问comon/login========================
wx.request({
method: 'POST',
url: 'http://localhost:8069/jsonrpc', //留意此处地址变化
data: {
"jsonrpc": "2.0",
"method": "call",
"params": {"service": "common", "method": "login", "args": [database, username, password]},
"id": null,
},
header: {
'content-type': 'application/json' // 默认值
},
success (res) {
console.log(res.data)
}
})