【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 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x