请求头中的应用程序/json和请求正文中的json字符串当我启动http请求时,Odoo服务器接收请求,但返回给客户端的json不是我想要返回的
这里有两个额外的键,jsonrpc
,id
,result
。对应于键result
的字典是我真正想要返回给客户机的
如果我将http.route
中的type
变量改为http
而不是json
,我将无法从客户端接收json格式的数据
我该怎么办?谢谢大家
我的Odoo版本是10,python版本是2.7.12
这是我的密码
控制器.py
from odoo.http import Controller,route
class API(Controller):
@route('/v1/access_something',type='json',auth='none',csrf=False,methods=['GET'])
def access_something(self,**kwargs):
return {"a":1,"b":2}
与requests
的测试接口
import requests
re = requests.get('http://192.168.1.55:8069/v1/access_something',json={"c":1},headers={'Content-Type':'application/json'})
print(re.json())
{
{
"jsonrpc": "2.0",
"id": null,
"result": {
"a": 1,
"b": 2
}
}
但是下面的结果就是我想要的
{
"a": 1,
"b": 2
}
我找到了解决这个问题的办法
出现这个问题是因为在源代码
JsonRequest
中有一个方法_json_response
,我们可以动态覆盖它为了不干扰其他人对原始框架的使用,我们可以使用kwargs在自己的decorator
@http.route
中传递自己的特定参数。我们通过确定decorator是否有我们自己的参数来构造json字典,以返回给客户机这是我的代码
controllers.py
具体参数
lover='chun'
是我们判断的基础,在方法_json_response
中,我们可以通过self.endpoint.routing.get('lover')
得到这个参数相关问题 更多 >
编程相关推荐