如何在烧瓶中获取 http headers?

How to get http headers in flask?

我是 python 的新手,使用 Python Flask 并生成 REST API 服务。

我想检查发送给客户端的授权header。

但我找不到在 flask 中获取 HTTP header 的方法。

感谢任何有关获得 HTTP header 授权的帮助。

from flask import request
request.headers.get('your-header-name')

request.headers 的行为类似于字典,因此您也可以像使用任何字典一样获取 header:

request.headers['your-header-name']

请注意,这些方法之间的不同之处在于,如果 header 不存在

request.headers.get('your-header-name')

会returnNone还是没有例外,所以你可以像

一样使用它
if request.headers.get('your-header-name'):
    ....

但是下面会报错

if request.headers['your-header-name'] # KeyError: 'your-header-name'
    ....

你可以通过

处理
if 'your-header-name' in request.headers:
   customHeader = request.headers['your-header-name']
   ....

如果有人试图获取所有已通过的 headers,那么只需使用:

dict(request.headers)

它在一个字典中为您提供了所有 headers,您可以从中实际执行您想要的任何操作。在我的用例中,我必须将所有 headers 转发给另一个 API,因为 python API 是代理

让我们看看如何在 Flask 中获取参数 headers 和 body。 我会在邮递员的帮助下解释。

params 键和值反映在 API 端点中。 例如端点中的 key1key2https://127.0.0.1/upload?key1=value1&key2=value2

from flask import Flask, request
app = Flask(__name__)

@app.route('/upload')
def upload():

    key_1 = request.args.get('key1')
    key_2 = request.args.get('key2')
    print(key_1)
    #--> value1
    print(key_2)
    #--> value2

params之后,我们现在看看如何得到headers:

header_1 = request.headers.get('header1')
header_2 = request.headers.get('header2')
print(header_1)
#--> header_value1
print(header_2)
#--> header_value2

现在让我们看看如何获​​得body

file_name = request.files['file'].filename
ref_id = request.form['referenceId']
print(ref_id)
#--> WWB9838yb3r47484

所以我们使用 request.files 获取上传的文件,使用 request.form

获取文本