5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

python FastAPI を使ってみた

Last updated at Posted at 2021-06-28

##はじめに
高速で有名なpythonのフレームワークのfast apiのチュートリアルをやってみました。
pythonのフレームワークはflaskくらいしか経験なかったんですが、非常に簡単に立ち上げが出来ました。
※公式のチュートリアルに沿って実施しています。

環境

  • lenovo Ideapad Duet(Chroome book)
  • Debian GNU/Linux 10 (buster)
  • python 3.7.3

インストール

以下コマンドでインストールしていきます。
稼働させるにはUvicornもしくはHypercornと呼ばれるASGIサーバーソフトウェアのインストールが必要だそうです。

pip install fastapi
pip install uvicorn[standard]

ここではuvicornを使用します。

エンドポイントの作成

main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

アプリケーション起動

uvicorn main:app --reload

http://127.0.0.1:8000/
にアクセス
image.png

GET

関数の引数ですが、
アノテーションのURLに{変数名}を指定することでパス内にパラメータを設定することができ、
その他はクエリストリングから取得するようです。

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

image.png

POST(PUT)

POST,PUTはリクエストBodyから取得するようです

curl -X POST -H "Content-Type: application/json" -d '{"name":"testItem", "price":"100","is_offer":true}' localhost:8000/items/5
{"item_name":"testItem","item_id":5}
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None

@app.post("/items/{item_id}")
def update_item(item_id: int, item: Item):
    print(item)
    return {"item_name": item.name, "item_id": item_id}

ドキュメント自動生成

swaggerUI,redoc形式のdドキュメントが自動生成されるのが便利ですね。

swagger

/docs

image.png

redoc

/redoc

image.png

自動生成されるドキュメントはどのようにカスタマイズするのか等は今後記事にできればと思います。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?