【问题标题】:Send json data for json get request in odoo 12在odoo 12中为json get请求发送json数据
【发布时间】:2019-11-14 11:25:05
【问题描述】:

我想从 odoo 控制器发送 json 数据。为此我在控制器下面创建了

from odoo.http import Response
import json


@http.route('/api/json_get_request',auth='public',type='json',methods=["GET"],csrf=False)
    def printjson(self,**kw):

        headers={'content-type':'application/json'}    
        return Response(json.dumps({"test":"json string"}),headers=headers)

但在邮递员中访问http://localhost:8089/api/json_get_request 给了我无效的 json 数据,然后我在该响应标头中检查了邮递员控制台 -> Content-Type: "text/html" 显示。 不明白json类型的数据发送后为什么没有收到json数据。

在邮递员上以 http 请求访问 http://localhost:8089/api/json_get_request 后,我得到了正确的 json 数据。 请给我建议 提前致谢

【问题讨论】:

    标签: json api controller postman odoo


    【解决方案1】:

    处理“json”请求的第一件事应该直接返回一个字典:

    @http.route('/api/json_get_request', auth='public', type='json',  csrf=False)
    def printjson(self, **kw):
        return {'attribute': 'test'}
    

    这将返回如下结果:

    {
      "jsonrpc": "2.0",
      "id": null,
      "result": {
        "attribute": "test"
      }
    }
    

    您遇到此错误是因为您没有随请求发送任何 json 数据。 您可以使用 requests 模块测试您的代码:

    >>> import requests
    >>> import json
    >>> url = 'http://localhost:8069/api/json_get_request'
    >>> data = {'params': {'test': 100}}
    >>> headers={'content-type':'application/json'}
    >>> requests.get(url, data=json.dumps(data), headers=headers)
    <Response [404]>
    

    它给了我这个错误,因为没有选择数据库,而且我有多个数据库。 如果您只有一个数据库,您会看到正确的结果。 但是当你从 Postman 扩展中测试它时,我使用了 RESTED

    因为我已经准备好登录到 Odoo,所以该方法已成功执行,只需寻找更好的邮递员扩展程序或搜索如何使用您当前的邮递员发送json 数据。你需要在请求中发送一些json数据。

    【讨论】:

    • 感谢@Charif DZ 的时间和回答。是的,我没有发送 json 数据,这是发生错误的原因。发送 json 数据并返回字典作为转换为 json [json.dumps({"test":"json string"})] 给我结果。您能否分享有关在 python 中用于 odoo 的请求的链接或文档
    • 我真的没有任何文件,我总是去 Odoo 代码并阅读它并尝试了解发生了什么。他们在那里做了很多事情,一些阅读、测试和谷歌搜索你会学到任何东西。
    猜你喜欢
    • 2021-05-23
    • 2021-06-20
    • 2019-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    相关资源
    最近更新 更多