Flask で JSON 形式のリクエストデータを処理する
この説明を使用して、JSON とは何か、および JSON 形式で着信要求データを処理する方法を学習します。また、PostmanChrome 拡張機能を使用して JSON データを送信する方法についても学習します。
Flask で JSON 形式のリクエストデータを処理する
JSON は、データを構造化するためのコンパクトで読みやすいテキスト形式です。JSON は JavaScriptObjectNotation の略です。これは、完全に言語に依存しないテキスト形式です。
中括弧で始まり、中括弧で終わります。JSON 形式は、人間にとっては非常に読みやすく、コンピューターにとっては解析と生成も簡単です。
Flask アプリへのリクエストデータを解析するもう 1つの方法があり、そのメソッドは JSON オブジェクトを使用します。これを実証するために、特定の URL に HTTP リクエストを送信できる Chrome のツールである Postman を使用します。
最初に行う必要があるのは、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 データを入力した後に Send
ボタンを押すことができます。応答を以下に示します。
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