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请求

Flask  request 对象介绍

POST请求

Flask  request 对象介绍

除此之外,请求报文中的其他信息都可以通过 request 对象提供的属性和方法获取,常用的部分如下:

  • url:请求的 url

  • args:WerkzeugImmutableMultiDict 对象,存储解析后的查询字符串,可通过字典方式获取键值

  • blueprint:当前蓝本的名称

  • cookies:一个包含所有随请求提交的 cookies 的字典

  • data:包含字符串形式的请求数据

  • endpoint:于当前请求相匹配的端点值

  • files:Werkzeug MultiDict 对象,包含所有上传文件

  • form:Werkzeug ImmutableMultiDict 对象,包含解析后的表单数据

  • values:WerkzeugCombinedMultiDict 对象,结合了 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:WerkzeugEnvironHeaders 对象,包含请求的头部字段

  • json:包含解析后的 json 数据,内部调用 get_json(),可通过字典的方式获取键值

  • method:请求的 HTTP 方法

  • referrer:请求发起的源 url,即 referer

  • scheme:请求的URL模式(http 或 https)

  • user_agent:用户代理(User Agent),包含了用户的客户端类型,操作系统类型等信息

来源:https://juejin.cn/post/7030009163803525133

标签:Flask,request,对象
0
投稿

猜你喜欢

  • asp和js两种方法判断远程图片是否存在

    2007-09-21 17:27:00
  • Golang 中 omitempty的作用

    2024-04-25 15:13:03
  • Xml中SelectSingleNode方法中的xpath用法

    2010-01-30 12:46:00
  • Python中使用ConfigParser解析ini配置文件实例

    2021-06-18 01:41:44
  • python判断字符串的前两个字母是否是"id"的示例代码

    2021-05-02 20:39:12
  • MySQL无法存储Emoji表情问题的解决方法分析

    2024-01-22 00:32:13
  • 提高python代码可读性利器pycodestyle使用详解

    2023-09-04 11:22:04
  • python实现折半查找和归并排序算法

    2023-06-24 00:08:01
  • 从web到内网渗透的一次过程详解

    2023-05-20 21:23:08
  • Python语法分析之字符串格式化

    2021-10-09 18:00:09
  • Python环境搭建过程从安装到Hello World

    2023-03-03 07:41:36
  • Python实现的拟合二元一次函数功能示例【基于scipy模块】

    2023-10-09 00:32:02
  • Go语言每天必学之switch语句

    2024-04-26 17:33:59
  • php-fpm报502问题的解决办法

    2023-10-12 04:12:23
  • python已协程方式处理任务实现过程

    2022-05-10 03:12:56
  • python嵌套函数使用外部函数变量的方法(Python2和Python3)

    2022-05-16 20:29:25
  • python中xrange用法分析

    2021-10-25 11:51:49
  • 如何解决在Azure上部署Sqlserver网络访问不了

    2024-01-14 07:47:38
  • SQL数据库操作类

    2009-01-14 16:26:00
  • Python 列表理解及使用方法

    2023-08-29 06:55:02
  • asp之家 网络编程 m.aspxhome.com