友情提示:
1、本文基于Flask环境进行处理
2、关于Flask环境搭建,可以参考 Python 测开27期 - TLF - 学习笔记 - 测试平台开发 - Flask安装及路由定义
一、处理请求数据
1、get 请求处理,通过 request.args 获取请求参数
# 处理 get 请求, 通过 request.args 获取请求参数(返回值为类似于字典形式)
@app.route("/", methods = ['get'])
def get_process():
info = request.args # 获取请求参数
name = info.get('name') # 获取指定参数的值
age = info.get('age') # 获取指定参数的值
print(f"请求信息为:{info},name={name}, age={age}")
return {"code":0,"msg":"get success"}
运行效果为:
控制台输出信息为:
2、post 请求处理,通过 request.json 获取请求参数(请求参数为JSON格式,返回值为字典形式)
# 处理 post 请求, 通过 request.json 获取请求参数
@app.route("/", methods = ['post'])
def post_process():
info = request.json # 获取请求参数
name = info.get("name") # 获取特定参数的取值
age = info.get("age") # 获取特定参数的取值
print(f"请求信息为:{info},name = {name}, age = {age} ")
return {"code": 0, "msg": "post success"}
可以借助 postman 发送请求并查看返回结果
控制台输出信息为:

3、表单信息处理(例如:登录、注册),通过 request.form 获取表单信息
# 处理 put 请求, 通过 request.form 获取请求参数
@app.route("/", methods = ["put"])
def put_process():
info = request.form # 获取表单数据
name = info.get("name")
password = info.get("password")
password_confirm = info.get("password_confirm")
email = info.get("email")
print(f"表单信息为:{info}, name = {name}, password = {password}, password_confirm = {password_confirm}, email = {email}")
return {"code":0, "msg":"put message, 注册信息处理"}
可以借助 postman 发送请求并查看返回结果
控制台输入信息为:
4、文件请求处理,通过 request.file 获取文件信息
- request.files.get(‘file’) 获取文件对象
- filename 获取文件对象的文件名
- save() 方法保存文件到指定路径下
# 客户端上传文件代码
import requests
# 上传文件到指定网址
def upload_file():
url = "http://127.0.0.1:5000/file/"
file = {"file":open(r"D:\CCPC2023.jpg","rb")} # tlf:注意,此处务必在字符串(路径)前加 r,以防 \ 转义
r = requests.post(url,files = file)
print(r.status_code) # 输出响应码
print(r.text) # 输出响应信息
upload_file() # tlf:注意,别忘了调用函数才能执行哦
# 服务器端获取文件信息代码
# 处理 post 请求,发送的信息为文件
@app.route("/file/", methods = ['post'])
def post_file_process():
file = request.files.get("file") # 创建文件对象,保存传入的file信息
print(f"文件名为:{file.filename}") # 获取文件名称并打印输出
file.save(r"D:\CCPC1.jpg") # tlf:注意,此处务必在字符串(路径)前加 r,以防 \ 转义
return {"code":0, "msg":"file message"}
二、返回响应数据
响应数据类型包括:
- 文本型
- 元组
- JSON
- html
- 额外数据(eg:Cookie、头信息等)
1、文本型
# 返回类型为文本
@app.route("/text/")
def response_text():
return "响应信息为文本类型"
2、元组
元组的表现形式有三种:
- (response, status)
- (response, headers)
- (response, status, headers)
其中,response-响应内容,字符串形式;status-状态码,整数形式;headers-响应头,字典形式
#返回类型为元组(此处,返回的元组类型为第三种)
@app.route("/tuple/")
def response_tuple():
return "黄淮学院",200,{"name":"tlf"} # 响应内容含响应体、状态码和响应头
3、JSON
# 返回类型为 JSON 格式
@app.route("/json/")
def response_json():
# 第一种方法:以 字典 形式设定返回数据,系统自动转换为 JSON 格式
# return {"name":"tlf", "age":18, "sex":"female"}
# 第二种方法:通过 flask 提供的 jsonify() 方法进行返回,此处参数为 字典 形式
# return jsonify({"name":"tlf", "age":20, "sex":"female"})
# 第三种方法:通过 flask 提供的 jsonify() 方法进行返回,此处参数为 key-value 形式,会被转换为 JSON 格式
return jsonify(name="tlf",age=19,sex="female")
4、html
在当前包下,创建一个templates文件夹,将html模板存放在该文件夹下
类似于:
以下为需要返回的html模板的具体内容:
<html>
<body>
<h1>黄淮学院</h1>
</body>
</html>
定义方法处理响应,返回html文件
# 返回类型为 html(通过调用 render_template() 方法将设置好的 html 模板进行返回)
@app.route("/html/")
def response_html():
# 返回提前设定好的模板,该模板需要存储在当前包下的 templates 文件夹下(名称必须是templates)
return render_template("demo.html")
5、额外数据
# 返回其他额外信息
# 注意:此处需要套用到事先准备好的html模板
@app.route("/extra/")
def response_extra():
extra = make_response(render_template("demo.html")) # 调用make_response()方法构造响应实例
extra.set_cookie("name","tlf_hhxy") # 设置响应信息的cookie
extra.headers["university"] = "hhxy" # 设置响应信息的头,注意写法
return extra
运行效果为:(可以通过F12查看请求和响应等信息)