この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは、稲葉です。
前にテック系の記事を読んでいたら、FastAPIと言うものを見つけました。
気になり調べてみたら、名前の通り API を構築するための Python の Web フレームワークだと分かり。
Python の Web フレームワークなら少し触ってみたいと思い。 さっそく、FastAPI で簡単な WebAPIを作ってみました。
という事で,今回はFastAPI を使っての API の構築の仕方を紹介したいと思います。
インストール
はじめにFastAPIをインストールします。
pip install fastapi
また、サーバーとして動作するのに必要なuvicornをインストールします。
pip install uvicorn
これでAPI 構築に必要な物のインストールは完了です。
構築
今回は簡単な税込み価格を出すだけの APIを作ります。
では早速、コードを書いていきたいと思います。
まず、名前はなんでも良いのですが、ここではfast_api という名前のフォルダーとその中にmain.pyを作成。
/src/fast_api/main.py
from fastapi import FastAPI
from pydantic import BaseModel
class TaxIn(BaseModel):
cost: int
tax_rate: float
app = FastAPI()
@app.get("/")
def index():
return {"message": "Hello World"}
@app.post("/")
def calc(data: TaxIn):
in_tax_cost = data.cost * (1 + data.tax_rate)
return {'税込み価格': in_tax_cost}
インポートした BaseModelと言うのは、型推論に使います。 これをすることでcost には int 型しか代入できず、tax_rate には float 型しか代入できなくなります。
そして、API が呼ばれた時の引数 data に TaxIn の型を当てる。
これでAPI 側のコードは完了です。
なので、一旦動かしてみたいと思います。
ターミナルを開き、以下のコマンドを打ち込みます。
uvicorn fast_api.main:app --reload
そうすると以下の画像のように、ターミナルに出力されます。
このURL をクリックしますと、このような画面になります。
作成した API の詳細を見るには、上記のURL の後ろに/docsと追加する。
そうすると、このような画面になり詳細が分かります。
次に API を呼び出すために、src下に test.py(名前はなんでも良いです)を作成。
/src/test.py
import requests
import json
def main():
url = 'http://127.0.0.1:8000/' # 先ほどターミナルに出力されたURL
data = {
'cost': 100,
'tax_rate': 0.1
}
# ここでAPIを呼び出す,データはjson形式ではないとエラーが起きる
res = requests.post(url, json.dumps(data))
print(res.json())
if __name__ == '__main__':
main()
これで呼び出し側のコードも完成です。
先ほどのターミナルを開いたまま、別のターミナルを開き python test.pyと打ちます。
こちらが実際のターミナルの出力例です。
まとめ
今回はFastAPI を使った WebAPI の構築の仕方を紹介しました。
税込み価格を出すだけの簡単な API だったこともあり、 あっという間(Fast)に作成できました。(想像以上の速さでした)
FastAPI は公式ドキュメントが詳細に分かりやすく書かれているため、 これを機に興味を持って頂いた方はぜひ覗いて見てみて下さい。
最後まで読んでくださりありがとうございます。