Flask是一个轻量级的 Python Web 框架,在处理 Web 应用的请求和响应方面表现出色。其中,request对象是 Flask 中用于获取客户端请求信息的重要工具,它提供了便捷的方式来处理 GET 和 POST 请求数据。本文将深入探讨在 Flask 中如何使用 request 对象的 GET 和 POST 方法。
我们常常需要在服务器上开启一个服务,供客户端调用或是传递数据,现将数据交互的两种方式(get、post)总结如下:
1.使用get方式获取数据:
GET 请求通常用于从服务器获取数据,数据会附加在 URL 中作为查询参数。在 Flask 中,可以通过 request.args 属性获取 GET 请求的参数。
应用场景:GET 方法常用于数据查询、搜索结果展示以及页面导航等场景。例如,在一个电商网站中,当用户在搜索框中输入关键词并点击搜索按钮时,浏览器通常会向服务器发送一个 GET 请求,将搜索关键词作为参数传递给服务器,服务器根据关键词在数据库中查询相关商品信息,并将结果页面返回给用户。又如,在一个博客网站中,当用户点击文章列表中的某一篇文章标题时,浏览器发送 GET 请求获取该文章的详细内容并展示。由于 GET 请求的参数会显示在 URL 中,所以它也方便用户进行书签收藏和分享链接,因为其他用户可以通过复制链接直接访问相同的资源。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/analyse', methods=['get'])
def analyse():
data = request.args.get("text")
print(data)
return data
if __name__ == "__main__":
app.run()
首先导入flask包中的request模块,通常使用request.args.get("key")来获取传递的数据中名称为key的内容。
客户端可以使用http://127.0.0.1:5000/analyse?text="2020年3月"来调用服务器的接口,输出内容如下:
"2020年12月"
2.使用post方式传递数据:
POST 请求主要用于向服务器提交数据,数据通常包含在请求体中。在 Flask 中,处理 POST 请求稍微复杂一些,需要根据提交数据的类型进行不同的处理。
应用场景:POST 方法广泛应用于表单提交场景,如用户注册、登录、发表评论、上传文件等操作。以用户登录为例,当用户在登录页面输入用户名和密码后,点击登录按钮,浏览器会向服务器发送一个 POST 请求,将用户名和密码数据封装在请求体中发送给服务器,服务器接收到数据后进行验证,如果验证通过则允许用户登录,否则返回相应的错误信息。在文件上传场景中,POST 方法能够将文件的二进制数据安全地传输到服务器,服务器再进行文件的保存和处理操作。
服务器端:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/analyse', methods=['post'])
def analyse():
data = request.form
text = data.get("text")
print(text)
return text
if __name__ == "__main__":
app.run()
客户端:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
post_data = {
"text": "abc"
}
res = requests.post(url="http://127.0.0.1:5000/analyse", data=post_data)
print(res.text)
客户端使用requests.post封装了url,data等数据后传递给服务器。
服务器使用request.form接收数据,并通过get("key")方法获取关键词为key的内容。
输出结果为:
abc
另外,如果客户端传递的数据是个列表形式,单纯使用request.form.get("key")的方式会出现数据缺失的现象,请读者阅读我的另一篇博文:解决flask中request.form获取列表数据缺失的问题-优快云博客
总结
在 Flask 中,request 对象的 GET 和 POST 方法为处理不同类型的客户端请求提供了强大而灵活的工具。熟练掌握这些方法的使用,能够帮助开发者构建出功能丰富、交互性强的 Web 应用程序,高效地处理各种客户端与服务器之间的数据传输和交互需求。