使用Flask.Request的方法和属性,获取get和post请求参数(二)

news/2025/3/14 18:22:06/

1、Flask中的request

在Python发送Post、Get等请求时,我们使用到requests库。Flask中有一个request库,有其特有的一些方法和属性,注意跟requests不是同一个。

2、Post请求:request.get_data()

用于服务端获取客户端请求数据。注意:是未经任何处理的原始数据而不管内容类型,如果数据时json的,则取得是json字符串,排序和请求参数一致。

2.1 Flask代码

不同方法的示例仅需要更换视图函数,后续仅展示视图函数。

# 注意:flask中的request和requests库不是同一个,要区分开
from flask import Flask, request# 创建一个flask实例
app = Flask(__name__)# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 获取未经处理过的原始数据而不管内容类型,如果数据格式是json的# 则取得是json字符串,排序和请求参数一致data = request.get_data()print(data)print(type(data))return 'hello world'if __name__ == '__main__':app.run()

2.2 测试代码(一直应用于后续章节,不再赘述)

import requestsdata = {"username": "cc","password": "123456"
}url = "http://127.0.0.1:5000/"
resp = requests.post(url=url, json=data)
print('post:', resp)
print('post:', resp.text)resp = requests.get(url=url, params=data)
print('get:', resp)
print('get:', resp.text)

2.3 执行效果

2.3.1 Flask

get.data()获取到的请求数据是字节流,排序和请求参数一致。
在这里插入图片描述

2.3.2 请求结果

get和post请求都成功了。
在这里插入图片描述

3、Post请求:request.data

获取到的也是未经处理的原始数据,如果数据格式是json的,则取得是json字符串,排序和请求参数一致。request.get_data()效果一样

4、Post请求:request.get_json()

将请求参数做了处理,得到字典格式,因此排序会打乱,依据字典排序规则

4.1 Flask代码

# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 将请求参数做了处理,得到字典格式,因此排序会打乱,依据字典排序规则。data = request.get_json()print(data)print(type(data))# 服务端就可以根据字典进行取值username = request.get_json()["username"]print(username)return 'hello world'

4.2 执行效果

4.2.1 Flask

将请求参数做了处理,得到字典格式,方便服务端按键取值,提取到username是“cc”。

注意:get请求是没有字典的,不能够取值,运行时可以注释掉get方法。
在这里插入图片描述

4.2.2 请求结果

post请求成功。
在这里插入图片描述

5、Post请求:request.json

跟request.get_json()效果相同。得到的是字典格式的,因此排序会打乱,依据字典排序规则。

代码如下:

# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 将请求参数做了处理,得到的是字典格式的,因此排序会打乱,依据字典排序规则data = request.jsonprint(data)print(type(data))# 如果这里的key服务端写错了,客户端请求时,就会出现500username = request.json['username']print(username)return 'hello world'

6、Get请求:request.args.get()

6.1 Flask代码

# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 可以获取单个的值username = request.args.get("username")print(username)return 'hello world'

6.2 执行结果

服务端拿到了username的值“cc”
在这里插入图片描述

7、Get请求:request.args.to_dict()

7.1 Flask代码

# 视图函数,只允许get和post请求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 可以获取get请求的所有参数,返回值是ImmutableMutiDict(不可变的多字典)类型i = request.argsprint(i)# 将获得的参数转化成字典j =  i.to_dict()print(j)print(type(j))print(j["username"])return 'hello world'

7.2 执行结果

在这里插入图片描述

8、模拟请求报错

8.1 500 Internal Server Error

当服务端key写错时,就会报500错误,例如可以把key username改成usename,运行后看下效果。
在这里插入图片描述在这里插入图片描述

8.2 404 Not Found

仅创建了实例,并没有视图函数,启动socket服务后,访问地址就会报404。或者请求url填写错误。

from flask import Flask# 创建一个flask实例
app = Flask(__name__)if __name__ == '__main__':app.run()

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/1018651.html

相关文章

详解——JS map()方法

JavaScript是一种广泛使用的编程语言,用于开发Web应用程序。它具有许多内置函数和方法,其中之一是map()方法。map()方法是一个非常有用的函数,它允许我们在数组中的每个元素上执行相同的操作,并返回一个新的数组。 map()方法的语…

idea - 刷新 Git 分支数据 / 命令刷新 Git 分支数据

一、idea - 刷新 Git 分支数据 idea 找到 fetch 选项,重新获取分支数据 二、命令刷新 Git 分支数据 git fetch参考链接 1. 远程Gitlab新建的分支在IDEA里不显示

docker小白第二天

centos上安装docker docker官网,docker官网,找到下图中的doc文档。 进入如下页面 选中manuals,安装docker引擎。 最终centos下的docker安装文档链接:安装文档链接. 具体安装步骤: 1、打开Centos,输入命…

log_softmax比softmax更好?

多类别分类的一个trick 探讨一下在多类别分类场景,如翻译、生成、目标检测等场景下,使用log_softmax的效果优于softmax的原因。 假设词典大小为10,一个词的ID为9(即词典的最后一个词),使用交叉熵作为损失函…

【工程优化问题】基于多种智能优化算法的压力容器设计问题研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

基于星火和Gradio的聊天机器人

星火大模型官网:https://xinghuo.xfyun.cn/ 1 创建虚拟环境(windows) conda create -n Gradio python3.8 pip install gradio 中间遇到os报错,解决方案: pip install aiofiles23.2.1 2 代码 SparkDesk.py&#xff1a…

Spring整合web环境

目录 1.添加pom 2.配置web.xml spring.xml 4.配置在创建一个类实现ServletContextListener 5.配置servlet 1.添加pom <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.…

界面控件DevExpress WPF Chart组件——拥有超快的数据可视化库!

DevExpress WPF Chart组件拥有超大的可视化数据集&#xff0c;并提供交互式仪表板与高性能WPF图表库。DevExpress Charts提供了全面的2D / 3D图形集合&#xff0c;包括数十个UI定制和数据分析/数据挖掘选项。 PS&#xff1a;DevExpress WPF拥有120个控件和库&#xff0c;将帮助…