Flask で JSON 形式のリクエストデータを処理する

Salman Mehmood 2022年8月18日
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() を介して送信した出力が表示されます。

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 データを入力した後に Send ボタンを押すことができます。応答を以下に示します。

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
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