在 Flask 中處理 JSON 格式的請求資料

Salman Mehmood 2022年7月18日
在 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() 傳送的輸出。

Flask 請求 JSON 輸出 1

但目前,它不接受任何型別的請求資料。要訪問 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 請求 JSON 輸出 2

我們的 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)
Salman Mehmood avatar Salman Mehmood avatar

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