Flask - request对象

一、前言

参考 https://www.cnblogs.com/poloyy/p/14995215.html

1、Flask 中很重要的 request 对象

  • 浏览器访问服务端时,向服务端发送请求
  • Flask 程序使用 request 对象描述请求信息
  • 当你想获取请求体、请求参数、请求头数据的时候,就需要靠 request 对象了

2、真实使用场景

浏览器访问服务端,需要将相应的数据发送给服务端,可能有如下场景:

  • 通过 URL 参数进行查询,浏览器需要将查询参数发送给服务端
  • 提交表单 form 进行查询,浏览器需要将表单 form 中的字段发送给服务端
  • 上传文件,浏览器需要将文件发送给服务端
  • 通过 JSON 格式的请求体进行请求,一般是 post 请求

服务端收到将客户端发送的数据后,封装形成一个请求对象,在 Flask 中,请求对象是一个模块变量 flask.request

 form、args、values、json 都是获取 http 请求的请求数据的属性,只不过请求体类型不同

二、获取url请求参数的例子

1、完整代码

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

@app.route('/query')
def query():
    return {"name":request.args['name'],"age":request.args['age']}

@app.route('/query2')
def query2():
    print('args=',request.args)
    print('form=',request.form)
    return 'form'

@app.route('/query3')
def query3():
    print('args=',request.args)
    print('json=',request.json)
    return 'json'

@app.route('/query4')
def query4():
    return {"name":request.values['name'],"age":request.values['age']}

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

 2、请求结果

1)/query

query后面可以随意拼接任何参数,代码中只写了获取返回参数=name和age的值

 2)/query2

用 form 属性的话得到是一个空字典哦,控制台输出结果如下:

 

 3)/query3

用 json 属性的话得到是一个 None 哦,所以无论如何都不要用 json 获取 url 请求参数哟!控制台输出结果如下:

 

 4)/query4

可以看到 values 属性也能拿到 url 请求参数哦

 三、获取表单参数的例子

1、完整代码

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

@app.route('/addUser',methods=['POST'])
def check_login():
    return {"name:":request.form['name'],"age":request.form['age']}

@app.route('/addUser2',methods=['POST'])
def check_login2():
    print('form=',request.form)
    print('args=',request.args)
    return "form"

@app.route('/addUser3',methods=['POST'])
def check_login3():
    print('form=',request.form)
    print('json=',request.json)
    return "json"

@app.route('/addUser4',methods=['POST'])
def check_login4():
    return {"name":request.values['name'],"age":request.values['age']}

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

2、请求结果

1)addUser

2)addUser2

 用 args 属性的话得到是一个空字典哦,控制输出结果如下:

 

3)addUser3

 用 json 属性的话得到是一个 None 哦,所以无论如何都不要用 json 获取 form-data 哟!控制台输出结果如下:

 

4)addUser4

可以看到 values 属性也能拿到 form 表单提交的数据哦

四、获取json数据的例子 

1、完整代码

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

@app.route('/addJson',methods=['POST'])
def check_login():
    return {"name:":request.json['name'],"age":request.json['age']}

@app.route('/addJson2',methods=['POST'])
def check_login2():
    print('json=',request.json)
    print('args=',request.args)
    return "json"

@app.route('/addJson3',methods=['POST'])
def check_login3():
    print('json=',request.josn)
    print('form=',request.form)
    return "json"

@app.route('/addJson4',methods=['POST'])
def check_login4():
    print('json=',request.json,type(request.json))
    print('values=',request.values)
    return {"name":request.json['name'],"age":request.json['age']}

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

2、请求结果

1)addJson

2)addJson2

 用 args 属性的话得到是一个空字典哦 ,控制台输出结果如下:

3)addJson3

用 form 属性的话得到是一个空字典哦 ,控制台输出结果如下:

4)addJson4

当你的请求体是 Json 时,是不能通过 values 来获取请求数据哦!!request.json 拿到的就是 Json 格式的请求体,并且自动转换成字典了哦!控制台输出结果如下: 

 

posted @ 2022-12-23 14:20  一加一  阅读(235)  评论(0编辑  收藏  举报