【Python】FastAPIでAsia/Tokyoのタイムゾーンを設定し、Json形式でレスポンスを出力する方法

【Python】FastAPIでAsia/Tokyoのタイムゾーンを設定し、Json形式でレスポンスを出力する方法

概要

この記事では、PythonのWebフレームワークであるFastAPIを使用して、Asia/Tokyoのタイムゾーンを設定し、Json形式でレスポンスを出力する方法について解説します。

コンテンツ

タイムゾーンの設定

FastAPIでは、タイムゾーンを設定するために、Pythonの標準ライブラリであるpytzを使用します。まず、pytzをインストールします。

pip install pytz

次に、FastAPIのアプリケーションを作成し、タイムゾーンを設定します。

from fastapi import FastAPI
from pytz import timezone

app = FastAPI()

@app.get("/api/time")
async def get_time():
    tokyo = timezone('Asia/Tokyo')
    current_time = datetime.now(tokyo)
    return {"time": current_time}

上記のコードでは、/api/timeエンドポイントにアクセスした際に、現在の日時をAsia/Tokyoのタイムゾーンで取得し、Json形式でレスポンスを返します。

レスポンスの出力

FastAPIでは、Json形式でレスポンスを返すために、pydanticというライブラリを使用します。まず、pydanticをインストールします。

pip install pydantic

次に、pydanticを使用して、レスポンスのモデルを作成します。

from fastapi import FastAPI
from pytz import timezone
from datetime import datetime
from pydantic import BaseModel

app = FastAPI()

class TimeResponse(BaseModel):
    time: str

@app.get("/api/time", response_model=TimeResponse)
async def get_time():
    tokyo = timezone('Asia/Tokyo')
    current_time = datetime.now(tokyo)
    return {"time": current_time}

上記のコードでは、レスポンスのモデルとしてTimeResponseクラスを作成し、timeフィールドを指定しています。また、response_model引数を使用して、レスポンスのモデルを指定しています。

タイムゾーンとレスポンスのテスト

タイムゾーンとレスポンスの設定が完了したので、実際に動作を確認してみましょう。

uvicorn main:app --reload

上記のコマンドを実行すると、FastAPIのサーバーが起動します。ブラウザでhttp://localhost:8000/api/timeにアクセスすると、現在の日時がJson形式で表示されます。

{
    "time": "2022-01-01T12:34:56+09:00"
}

まとめ

この記事では、FastAPIを使用して、Asia/Tokyoのタイムゾーンを設定し、Json形式でレスポンスを出力する方法について解説しました。タイムゾーンの設定にはpytzを使用し、レスポンスの出力にはpydanticを使用しました。これにより、正確な日時情報を指定したタイムゾーンで取得し、Json形式でレスポンスを返すことができます。

0 0
Article Rating
申し込む
注目する
guest

0 Comments
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x