Flask(7)- request 对象(上)

简介: Flask(7)- request 对象(上)

Flask 中很重要的 request 对象


  • 浏览器访问服务端时,向服务端发送请求
  • Flask 程序使用 request 对象描述请求信息
  • 当你想获取请求体、请求参数、请求头数据的时候,就需要靠 request 对象了
  • 这一篇会用结果驱动源码解析的方式来讲解

 

真实使用场景


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

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

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

 

request 包含的常用属性

属性 说明
method 当前的请求方法
form 表单参数及其值的字典对象
args 查询字符串的字典对象
values 包含所有数据的字典对象
json 如果 mimetype 是 application/json,这个参数将会解析 json 数据,如果不是则返回 None
headers http 协议 请求头
cookies cookie 名称和值的字典对象
files 与上传文件有关的数据

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

 

还记得之前讲 url 组成的时候,request 对象也能获取 url 相关参数吗,复习下

 

request 获取 url 组成的常用属性

假设 URL 等于 http://localhost/query?userId=123,request 对象中与 URL 参数相关的属性如下

属性 说明
url http://localhost/query?userId=123
base_url http://localhost/query
host localhost
host_url http://localhost/
path /query
full_path /query?userId=123

 

获取 url 请求参数的栗子


代码

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
# author: 小菠萝测试笔记
# blog:  https://www.cnblogs.com/poloyy/
# time: 2021/7/11 11:13 上午
# file: 5_request.py
"""
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)


  • 下面我会用 postman 统一通过 params,就是 url 请求参数传数据
  • 在 Flask 里面,把四种获取请求数据的属性都写一遍,然后看看最后的结果,提前帮大家踩坑

 

postman 发起请求的结果

/query


image.png

/query2

控制台输出

args = ImmutableMultiDict([('name', 'zhangsan'), ('age', '13')])

form = ImmutableMultiDict([])

用 form 属性的话得到是一个空字典哦

 

/query3

控制台输出

args = ImmutableMultiDict([('name', 'zhangsan'), ('age', '13')])

json = None

用 json 属性的话得到是一个 None 哦,所以无论如何都不要用 json 获取 url 请求参数哟!

 

/query4

image.png

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

 

获取表单参数的栗子


代码

#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
# author: 小菠萝测试笔记
# blog:  https://www.cnblogs.com/poloyy/
# time: 2021/7/11 1:47 下午
# file: 5_request_form.py
"""
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 "good"
@app.route('/addUser3', methods=['POST'])
def check_login3():
    print('form =', request.form)
    print('json =', request.json)
    return "good"
@app.route('/addUser4', methods=['POST'])
def check_login4():
    return {"name": request.values['name'], "age": request.values['age']}
if __name__ == '__main__':
    app.run(debug=True)


  • 下面我会用 postman 统一通过 form-data,就是表单格式来传数据
  • 在 Flask 里面,把四种获取请求数据的属性都写一遍,然后看看最后的结果,提前帮大家踩坑
相关文章
|
5月前
|
JSON 前端开发 数据安全/隐私保护
通过一个form表单的渲染演示,Flask的request,重定向语法
通过一个form表单的渲染演示,Flask的request,重定向语法
48 0
通过一个form表单的渲染演示,Flask的request,重定向语法
|
4月前
|
JSON API 数据格式
如何使用Flask request对象处理请求
在 Flask 中,request对象是处理 HTTP 请求的重要工具之一。它提供了许多属性和方法,可以帮助我们获取请求的相关信息和数据。本文将向你介绍request对象的常用方法以及如何在 Flask 应用程序中使用它。
86 3
|
存储 JavaScript 前端开发
使用 Flask 的g对象和 MySQL 实现用户登录和注销功能
使用 Flask 的g对象和 MySQL 实现用户登录和注销功能
|
编解码 Python
Flask request
Flask request
103 0
Flask request
|
XML JSON 前端开发
Flask request请求对象
Flask request请求对象
|
JSON 数据格式 Python
Flask(7)- request 对象(下)
Flask(7)- request 对象(下)
136 0
Flask(7)- request 对象(下)
|
前端开发 Python
小白学Flask第五天 | 详解很重要的request对象
小白学Flask第五天 | 详解很重要的request对象
192 0
小白学Flask第五天 | 详解很重要的request对象
|
5天前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
【10月更文挑战第12天】本文介绍了如何使用Python和Flask构建一个简单的RESTful API。首先概述了API的重要性及RESTful API的基本概念,接着详细讲解了Flask框架的特性和安装方法。通过创建一个基本的Flask应用,定义了处理“图书”资源的GET、POST、PUT和DELETE方法的路由,展示了如何处理请求和响应,以及如何进行错误处理。最后,提供了运行和测试API的方法,总结了Flask在构建RESTful API方面的优势。
16 1
|
7天前
|
JSON API 数据格式
构建RESTful APIs:使用Python和Flask
【10月更文挑战第10天】本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web应用框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了代码示例。通过这些步骤,读者可以快速掌握使用Flask构建RESTful API的方法。
22 1
|
15天前
|
数据库 开发者 Python
使用Python和Flask构建Web应用
【10月更文挑战第2天】使用Python和Flask构建Web应用
16 1