在 Flask 中处理 JSON 格式的请求数据
通过这个解释,我们将了解 JSON 是什么以及如何处理 JSON 格式的传入请求数据。我们还将学习如何使用 Postman Chrome 扩展来发送 JSON 数据。
在 Flask 中处理 JSON 格式的请求数据
JSON 是一种用于结构化数据的紧凑、可读的文本格式。JSON 代表 JavaScript 对象表示法;它是一种完全独立于语言的文本格式。
它以大括号开头和结尾。JSON 格式对于人类来说非常容易阅读,对于计算机来说也很容易解析和生成。
还有另一种方法可以将请求数据解析到 Flask 应用程序,该方法将使用 JSON 对象。为了演示这一点,我们将使用 Postman,这是 Chrome 中的一个工具,允许你向特定 URL 发送 HTTP 请求。
我们必须做的第一件事是创建一个处理 JSON 的路由。我们称之为/post-data
,它只接受 POST
请求,但这取决于你要使用什么 HTTP 方法。
现在我们将定义一个名为 POST_REQ_DATA()
的方法。我们将返回一个 JSON 对象 jsonify()
,并在其中放入一个字典。
@app.route("/post-data", methods=["POST"])
def POST_REQ_DATA():
return jsonify({"Post_Request": "Sent"})
如果我们转到 Postman 并切换到 POST
请求,输入 /post-data
并发送它,我们将看到我们通过 jsonify()
发送的输出。
但目前,它不接受任何类型的请求数据。要访问 JSON 请求,我们将返回 Flask 应用程序,在函数内部,我们将调用 request.get_json()
方法。
此方法将获取传入的 JSON 对象并将其转换为 Python 数据结构。当我们将它传递给 jsonify()
时,它会在 JSON 对象上找到一个对象并将其转换为 Python 字典,并将 JSON 对象中的数组转换为 Python 中的列表。
现在我们将使用 request.get_json()
声明一个名为 P_R
的对象,然后我们将使用它作为键来定义一些值并将它们传递到 jsonify()
方法中。这些值应该只是常规变量。
def POST_REQ_DATA():
P_R = request.get_json()
company_name = P_R["company_name"]
location = P_R["location"]
userlist = P_R["userlist"]
return jsonify(
{
"Post_Request": "Sent",
"company_name": company_name,
"location": location,
"userlist": userlist[1],
}
)
我们将返回 Postman,单击 Body 选项卡,然后切换到 Raw,然后确保在此下拉列表中选择 JSON 应用程序,因为它是 Jason mime 类型。现在我们可以在这里编写 JSON 查询,并在输入 JSON 数据后点击发送
按钮;响应如下所示。
我们的 Flask 应用程序的完整源代码如下所示:
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/post-data", methods=["POST"])
def POST_REQ_DATA():
P_R = request.get_json()
company_name = P_R["company_name"]
location = P_R["location"]
userlist = P_R["userlist"]
return jsonify(
{
"Post_Request": "Sent",
"company_name": company_name,
"location": location,
"userlist": userlist[1],
}
)
# We feed the follwing data inside the postman
# {'company_name':'Delftstack','location':'Netherland','userlist':['Harry Parker','Goerge Wilson']}
if __name__ == "__main__":
app.run(debug=True)
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn