odoo controllers 中type="Json" 或type="http"


服務端接收參考:

# 導包
from odoo import http
class HttpRequest(http.Controller):
    @http.route('/url', type='json', auth='public', website=True)
    def server_method(self, *args, **kwargs):
        # *args, **kwargs接收參數
        pass
# route中的參數可以參考odoo/http.py文件里def route(route=None, **kw)方法
# type在這里選擇json

提供一個操作model(創建、修改)報權限問題的解決方法:

# 需要導入odoo
import odoo
# http.request.env['model'].create() 前加入下面這句話,會用超級管理員執行操作。若擔心問題的話,可以使用登錄的方法,這里暫不做演示
http.request.uid = odoo.SUPERUSER_ID
  • 客戶端發送參考

  • import requests, json
    data = {"params":param} 
    # 這個param代表需要傳入的參數,params這個key非常重要,只有帶了這個key,服務端才能接受到參數
    # 可以參考odoo/http.py文件里 class JsonRequest(WebRequest) 類,明確說明了
    requests.post(url='http://localhost:8069/url', data=json.dumps(data))
    # 說明一下,resquest中post這個api會根據data的數據類型自動轉換請求頭里Content-Type對應的參數

     

或者通過工具postman測試:

 

 

最后值得注意的地方

    • 服務端
      type='json'
    • 客戶端
      data中一定要加入params
      數據需要轉成Json

 

 

案例1

 

如何使用type =’json’在Odoo控制器中獲取JSON數據?

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM