Python-在控制器内读取头文件?

Python-在控制器内读取头文件?,python,openerp,werkzeug,request-headers,odoo-10,Python,Openerp,Werkzeug,Request Headers,Odoo 10,我正在源代码管理系统和Odoo之间构建controller,使特定的集成代码源代码管理系统(如bitbucket、github)能够使用json加载数据。读取实际的有效数据是可行的,但我正在努力的是读取标题控制器中的数据controller 我需要标题数据,以便识别从哪个系统接收此有效负载(例如,bitbucket和github中的数据结构可能不同)。现在,如果我阅读标题,我就会知道哪个系统有效加载数据以及如何正确解析数据 因此,我的控制器如下所示: from odoo import http

我正在源代码管理系统和Odoo之间构建
controller
,使特定的集成代码源代码管理系统(如bitbucket、github)能够使用json加载数据。读取实际的有效数据是可行的,但我正在努力的是读取
标题
控制器中的数据
controller

我需要
标题
数据,以便识别从哪个系统接收此有效负载(例如,bitbucket和github中的数据结构可能不同)。现在,如果我阅读
标题
,我就会知道哪个系统有效加载数据以及如何正确解析数据

因此,我的
控制器
如下所示:

from odoo import http
from odoo.http import request


class GitData(http.Controller):
    """Controller responsible for receiving git data."""

    @http.route(['/web/git.data'], type='json', auth="public")
    def get_git_data(self, **kwargs):
        """Get git data."""
        # How to read headers inside here??
        data = request.jsonrequest
        # do something with data
        return '{"response": "OK"}'
例如,现在我可以通过以下方式调用此路线:

import requests
import json

url = 'http://some_url/web/git.data'
headers = {
 'Accept': 'text/plain',
 'Content-Type': 'application/json',
 'type': 'bitbucket'}
data = {'some': 'thing'}

r = requests.post(url, data=json.dumps(data), headers=headers)
现在看起来控制器自动读取头,因为它知道它是json类型的。但是如果我需要手动检查特定的头数据,比如
头['type']
(在我的示例中是
比特桶
),该怎么办

我试图查看
dir(self)
dir(request)
,但没有看到任何与标题相关的内容。另外,
**kwargs
为空,因此没有标题

注意。
请求
对象实际上是:

# Thread local global request object
_request_stack = werkzeug.local.LocalStack()

request = _request_stack()
"""
    A global proxy that always redirect to the current request object.
""" 
# (This is taken from Odoo 10 source)
所以基本上它是werkzeug的一部分

也许有人在
werkzeug
控制器方面有更多的经验,所以可以为我指出正确的方向吗

另外,在奥多本身,我没有找到任何能像我所希望的那样阅读标题的例子。看起来,在构建响应时,唯一使用的位置标题(实际上是设置标题而不是读取标题)是在事实之后使用的

from openerp.http import request
在控制器内处理特定路径。您可以使用下面的代码访问请求头。(确认Odoo8、Odoo10……可能也适用于Odoo9)


你看过这里吗?谢谢。我在源代码中看到了这一点,但不知怎的,我认为它是针对
http
routing类型的,我使用的是
json
type。但不管是哪种类型,它都能工作。这正是我所需要的。相信我,我听到了。我在控制器方面做了很多工作。文档实际上淡化了请求和响应的哪些方面包含在哪里。当我为Odoo创建Facebook聊天机器人时,我花了大量时间试图确定响应对象的位置。这些文档让你看起来像是在**kw中找到了一切。这显然只是表面现象。祝你过得愉快。
headers = request.httprequest.headers