在 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