Flask request 对象介绍
作者:tigeriaf 时间:2022-11-01 23:45:35
前言:
一个完整的 HTTP
请求,包括客户端向服务端发送的 Request
请求和服务器端发送的 Response
响应。为了能方便的访问获取请求及响应报文信息,Flask
框架提供了一些内建对象,下面就来说一下 Flask 针对请求提供的内建对象request
。
1、request请求对象
request
请求对象封装了从客户端发来的请求报文信息,我们能从request
对象上获取请求报文中的所有数据。 其大部分功能是由依赖包Werkzeug
完成的,Flask
做了一些特定功能的封装,形成了request
请求对象。
1.1request请求对象的使用
导入flask包中的request对象,就可以直接在请求函数中使用该对象了。
from flask import request
@app.route('/user', methods=['GET', 'POST'])
def user():
if request.method == 'POST':
user_name = request.form['user_name']
return 'user :{} add success!'.format(user_name)
else:
user_id = request.args.get('user_id', 0)
return 'Hello user:{}!'.format(user_id)
上述代码中:request对象中的method
变量可以获取当前请求的方法,即GET、POST、PUT、DELETE等;form变量获取POST请求form-data表单中的数据,本质是一个字典,如果提交的表单中没有user_name
,则会返回 400 Bad Request
的错误,当然也可以使用异常捕获机制处理。request.args.get()
方法获取的是GET请求的url中的参数(问号?之后的部分),第一个参数指定获取的 url 参数的 key,第二个参数指定默认值,当 key 不存在时,则返回默认值。
如下:
GET请求
POST请求
除此之外,请求报文中的其他信息都可以通过 request 对象提供的属性和方法获取,常用的部分如下:
url
:请求的url
args:Werkzeug
的ImmutableMultiDict
对象,存储解析后的查询字符串,可通过字典方式获取键值blueprint
:当前蓝本的名称cookies
:一个包含所有随请求提交的cookies
的字典data
:包含字符串形式的请求数据endpoint
:于当前请求相匹配的端点值files:Werkzeug
的MultiDict
对象,包含所有上传文件form:Werkzeug
的ImmutableMultiDict
对象,包含解析后的表单数据values:Werkzeug
的CombinedMultiDict
对象,结合了args
和form
属性的值get_data(cache=True,as_text=False,parse_from_data=False):
获取请求中的数据,默认读取为字节字符串(bytestring),as_text为True则返回解码后的unicode
字符串get_json(self,force=False,silent=False,cache=True)
:作为 json 解析并返回数据,如果MIME
类型不是 json,返回 None(除非 force 设为 True);解析出错则抛出Werkzeug提供的BadRequest
异常(如果未开启调试模式,则返回400错误响应),如果 silent 设为 True 则返回 None;cache 设置是否缓存解析后的 json 数据headers:Werkzeug
的EnvironHeaders
对象,包含请求的头部字段json
:包含解析后的 json 数据,内部调用 get_json(),可通过字典的方式获取键值method
:请求的 HTTP 方法referrer
:请求发起的源 url,即referer
scheme
:请求的URL模式(http 或 https)user_agent
:用户代理(User Agent),包含了用户的客户端类型,操作系统类型等信息
来源:https://juejin.cn/post/7030009163803525133
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
对学好网页设计很有价值的一句话
![](https://img.aspxhome.com/file/UploadPic/200710/28/2007102816649948s.jpg)
省市级联菜单的可用性
用面包屑来简化多层的tabs
Python装饰器的练习题
通过事务日志解决SQL Server常见四大故障(一)
oracle 存储过程和函数例子
python实现将json多行数据传入到mysql中使用
数据库连接字符串的常见问题和解决方法
Python实现利用163邮箱远程关电脑脚本
变态输入框——再谈校验包容性(一)
![](https://img.aspxhome.com/file/UploadPic/200910/10/1249f1d8f61g215-51s.jpg)
如何在SQL Server中由原子建立分子查询
php实现将数组或对象写入到文件的方法小结【三种方法】
Go语言实现的树形结构数据比较算法实例
python的类class定义及其初始化方式
玩转CSS3色彩[译]
![](https://img.aspxhome.com/file/UploadPic/20101/13/01-80s.jpg)
如何正确处理数据库中的Null
Opencv+Python实现图像运动模糊和高斯模糊的示例
![](https://img.aspxhome.com/file/2023/9/66349_0s.jpg)