概要
在Odoo中,JSON-RPC(JSON Remote Procedure Call)是一种基于JSON格式的远程过程调用协议,用于客户端和服务器之间的通信。此文章将介绍 JSON-RPC中由session_id进行权限控制的Api的使用场景以及调用方式(登录、验证身份、增、删、改、查、自定义方法、路由)。
主要使用场景
- Web 应用集成:适用于需要在浏览器中保持用户会话的 Web 应用。因为这种方式返回
session_id
,可以在后续请求中使用该会话 ID。- 复杂权限管理:适用于需要复杂权限管理的应用,可以利用 Odoo 的会话机制进行权限验证和管理。
- 需要与其他 Odoo Web 功能集成:如果应用需要与 Odoo 的其他 Web 功能(如 Web 客户端)集成,这种方式更合适。
调用方式
登录
curl --request POST \
--url http://127.0.0.1:8069/web/session/authenticate \
--header 'content-type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "call",
"params": {
"db": "csdn_module_1",//数据库名【除此之外,还需要在服务器指定数据库(可以odoo.conf配置db_name)或者只保留一个数据库,否则会出现404】
"login": "admin",//账号
"password": "1"//这种方式只能用密码登录,不能用密钥
},
"id": 123456//随机数(建议直接用时间戳或者生成一个唯一的数字)
}
//注:session_id在登录后返回,默认有效期30天(odoo14之前session_id返回在响应体body,但是14以及之后的机制产生了变更,返还的body中不再有session_id,反而返回在了Headers中)'
验证session_Id
curl --request POST \
--url http://127.0.0.1:8069/web/session/check \
--header 'X-Openerp-Session-Id: b827b1fe540a787981716dbd594e2b27bd47de94' \
--header 'content-type: application/json' \
--data '{
"jsonrpc": "2.0",
"method": "call",
"params": {},
"id": 123456
}'