Flask之request.json()和 request.form.get()

发布时间 2023-11-21 13:56:56作者: __username

在Flask中,request.jsonrequest.form.get() 用于从HTTP请求中获取数据,但它们主要用于不同类型的数据传递方式。

  1. request.json

    • 用于从包含JSON数据的请求体中提取数据。

    • 适用于POST请求中包含JSON数据的情况,通常是通过AJAX请求或使用Content-Type: application/json标头发送的数据。

    • 自动解析JSON数据,并返回一个对应的Python字典或其他合适的数据类型。

    • 使用时,确保请求的Content-Type标头是application/json

      data = request.json
      
  2. request.form.get()

    • 用于从表单数据中获取数据。

    • 适用于HTML表单通过POST请求提交的数据,通常使用application/x-www-form-urlencodedmultipart/form-data作为Content-Type

    • 可以通过表单字段的名称来获取相应的值。

      data = request.form.get('fieldname')
      

总的来说,选择使用哪个方法取决于客户端发送数据的方式。如果是JSON数据,使用 request.json;如果是表单数据,使用 request.form.get()。如果可能,可以根据需要同时处理这两种情况,以确保你的应用程序可以处理不同类型的请求。

以下是一个示例,说明如何根据请求的内容类型使用这两种方法:

from flask import Flask, request

app = Flask(__name__)

@app.route('/process_data', methods=['POST'])
def process_data():
    if request.headers['Content-Type'] == 'application/json':
        data = request.json
        # 处理 JSON 数据
    elif request.headers['Content-Type'] == 'application/x-www-form-urlencoded':
        data = request.form.get('fieldname')
        # 处理表单数据
    else:
        return 'Unsupported Media Type', 415  # 返回415状态码表示不支持的媒体类型

    # 进行处理的其他逻辑

if __name__ == '__main__':
    app.run()

在实际应用中,通常会根据具体的需求和前端交互来选择使用 request.jsonrequest.form.get()


或前端发请求加这个