
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
【已解决】如何在Controller中获取application/json的body数据?
-
在定义好controller后,将类型定义为 json,如果获取别人请求的数据?
@http.route('/test', auth='none', type='json', csrf=False)
def test(self, **kw)
_logger.info('The controller is worked')
return {'code': 200}在这里获取kw是空的,如何获取到请求里的数据?
-
-
''' http.request.httprequest.data ''' 试试这个
-
空的,没取出来,我用postman模拟发送的请求
但是取出来的是空的 -
-
Controller写法还是有问题,因为请求的机制不同,请求的数据是一个json而且不再url后面,也不在post的data里面,二十直接封装在请求的body体里面,故此,需要拿到请求体,这里也是@guwenfengvip163-com的回帖给了我启发,谢谢!我把controller做了以下改进|:
@http.route('/test', auth='none', type='json', csrf=False)
def test(self, request, **kw)
params = request.jsonrequest
_logger.info(params)
return {'code': 200}
修改是:
首先在参数里面加上了request,再就是通过request.jsonrequest拿到请求体,其实拿到的请求体,就是访问的json数据。
说点废话:kw里面是空的,取不到任何值,有兴趣的可以研究研究,如果kw里面有值,是怎么传进去的,又是何种请求方式。
最后,谢谢大家的帮助! -
请求端的json数据构造为下面的格式,试试:
jsondata = '{"params": YourdataDictHere}'
-
@digitalsatori 其实请求端我控制不了,是电信平台的,我只是在他们平台设置了一个回调地址,然后我这边用controller实现。然后按电信平台的要求写的,请求方式是https,post,类型是application/json,不过已经都解决啦,谢谢