Back to Blog

Flaskでのjsonifyの使い方を解説!FlaskでAPIを作ろう

flask

2024年7月26日

こんにちは!

今回の記事では、Flaskでのjsonifyの使い方を解説します。

FlaskはPythonで使われる軽量なウェブフレームワークであり、Web APIの構築にも非常に適しています。

APIのレスポンスとしてJSONを返す場合、Flaskのjsonify関数を使うと便利です。

この記事では、jsonifyの使い方について詳しく説明します。

jsonifyとは?

jsonifyはFlaskが提供する関数で、Pythonの辞書やリストなどのデータ構造をJSON形式のレスポンスに変換します。これにより、JSON形式のデータを簡単にクライアントに返すことができます。

JSON(JavaScript Object Notation)は、データを軽量かつ構造化された形式で表現するためのフォーマットです。以下のような構造かされたデータです。

{
    "name": "Bob",
    "contact": {
        "email": "bob@example.com",
        "phone": "123-456-7890"
    }
}

jsonifyは上記のようなJsonデータをFlaskで返すために使います。

jsonifyの基本的な使い方

次に、jsonifyの基本的な使い方を解説します。

Flaskのインストール

まず、Flaskのインストールを行います。

pip install Flask

アプリケーションファイルの作成

次にapp.pyファイルを作成します。

以下のように設定します。

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api')
def get_data():
    data = {
        "name": "taro",
        "age": 30,
        "city": "tokyo"
    }
    return jsonify(data)

if __name__ == '__main__':
    app.run(debug=True)

この例では、/apiエンドポイントにアクセスすると、以下のようなJSONレスポンスが返されます。

{
    "name": "taro",
    "age": 30,
    "city": "tokyo"
}

jsonifyの応用的な使い方

次にjsonifyの応用的な使い方を解説します。

複数の引数を渡す場合

jsonifyは複数の引数を取ることもできます。

この場合、キーワード引数としてデータを渡します。

@app.route('/api/info')
def get_info():
    return jsonify(name="taro", age=30, city="tokyo")

このエンドポイントにアクセスすると、以下のようなJSONレスポンスが返されます。

{
    "name": "taro",
    "age": 30,
    "city": "tokyo"
}

カスタムステータスコードとヘッダー

jsonifyを使ってレスポンスのステータスコードやヘッダーをカスタマイズすることもできます。

@app.route('/api/custom')
def get_custom():
    data = {
        "name": "taro",
        "age": 30,
        "city": "tokyo"
    }
    response = jsonify(data)
    response.status_code = 202
    response.headers['Custom-Header'] = 'CustomValue'
    return response

このエンドポイントにアクセスすると、202ステータスコードとカスタムヘッダーが含まれたレスポンスが返されます。

まとめ

今回の記事では、Flaskでのjsonifyの使い方を解説しました。

基本的な使い方から、カスタマイズ方法などを解説しました。Flaskとjsonifyを組み合わせると、APIを簡単に作成することができます。

APIを作ることで、さまざまなアプリケーションとの連携が期待できます。今回の記事がAPIの実装などにお役になれば幸いです。

ここまでお読みいただきありがとうございました。

Webの知識を作りながら学ぶ
Flask WebAcademy

SNSアプリやチャットアプリ、さまざまなアプリを作りながら学べる実践的なカリキュラム

詳細を見る