Python-FastAPI入門チュートリアル

I.はじめに

最近、フロントエンドとバックエンドが分離されたWeb開発を行っています。フロントエンドフレームワークはVueを使用し、フロントエンドコンポーネントライブラリはElement-UIであり、バックエンドはDjango-Rest-Framework、Flask、およびFastApiでホバリングしています。1つずつテストしました。最後に、FastApiが選択されました。

その理由は次のとおりです。

  1. Django-Rest-Framework:面倒な感じがします。公式のドキュメントは初心者にとって十分に親しみやすくなく、Web開発の素人である私にとってはもっと難しいものです。
  2. フラスコ:比較的軽量ですが、API開発にはあまり適しておらず、変換するには特定の関数が必要です。
  3. FastApi:独自のAPIドキュメントがあり(インターフェイスは非常に美しく、開発中にテストするために追加のページを作成する必要はありません)、json形式のAPIに非常に適しています。

次の図は、組み込みのテストインターフェイスを示しています。
ここに画像の説明を挿入

2.ケース

こんにちは世界

以下はHelloworldの場合です。新しいhelloworld.pyスクリプトを作成します。

import uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def home():
    return {
    
    "message": "Hello World"}

uvicorn.run(app=app)

上記のスクリプトuvicornでは、ASGIサーバーです。デフォルトのポート8000、デフォルトhostlocalhost以下の方法portおよびhost変更により実施することができる

app.get('/')登録されたルートを使用します。アドレスにアクセスすると、辞書は対応する(JSON文字列)を返します。

    uvicorn.run(app, host="127.0.0.1", port=8000)

127.0.0.1:8000/docs開いてテストします。ドキュメントを使用したテスト結果
ここに画像の説明を挿入
ここに画像の説明を挿入

このようなドキュメントを持参すると、テストインターフェイスを作成する時間が短縮されるという大きな利点があります。FastApiは、JSONフォーマットリターンを直接使用することもできます(以下の場合など、より良い方法があることもサポートしています)

この場合、ドキュメントの利点は反映されません。入力が不要なため、出力を取得できます。

入出力

from fastapi import FastAPI
from pydantic import BaseModel, EmailStr

app = FastAPI()


class UserIn(BaseModel):
    username: str
    password: str
    email: EmailStr
    full_name: str = None


class UserOut(BaseModel):
    username: str
    email: EmailStr
    full_name: str = None


@app.post("/user/", response_model=UserOut)
async def create_user(*, user: UserIn):
    return user


# pip install pydantic[email]
if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)

関数user: UserInUserIn、モデルに沿ってデータを入力する必要があるショーのパラメーターを定義しますに構成さresponse_modelUserOut、出力データがUserOutモデルと一致しいることを示します。FastApiは自動的にフィルタリングします

入る
ここに画像の説明を挿入

出力
ここに画像の説明を挿入

組み込みドキュメントは、コード内のクラスに対応するすべてのスキーマ(スキーマ)を表示できます(辞書を使用してすばやく初期化できます)。
ここに画像の説明を挿入
ここに画像の説明を挿入

その他の利点

  1. 他のテンプレートを導入できます
  2. 初心者にとても優しい公式チュートリアル

おすすめ

転載: blog.csdn.net/qq_43085611/article/details/105876509