【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形式でレスポンスを返すことができます。