I.はじめに
最近、フロントエンドとバックエンドが分離されたWeb開発を行っています。フロントエンドフレームワークはVueを使用し、フロントエンドコンポーネントライブラリはElement-UIであり、バックエンドはDjango-Rest-Framework、Flask、およびFastApiでホバリングしています。1つずつテストしました。最後に、FastApiが選択されました。
その理由は次のとおりです。
- Django-Rest-Framework:面倒な感じがします。公式のドキュメントは初心者にとって十分に親しみやすくなく、Web開発の素人である私にとってはもっと難しいものです。
- フラスコ:比較的軽量ですが、API開発にはあまり適しておらず、変換するには特定の関数が必要です。
- 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
、デフォルトhost
はlocalhost
。以下の方法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: UserIn
でUserIn
、モデルに沿ってデータを入力する必要があるショーのパラメーターを定義します。に構成さresponse_model
れUserOut
、出力データがUserOut
モデルと一致していることを示します。FastApiは自動的にフィルタリングします
入る
出力
組み込みドキュメントは、コード内のクラスに対応するすべてのスキーマ(スキーマ)を表示できます(辞書を使用してすばやく初期化できます)。
その他の利点
- 他のテンプレートを導入できます
- 初心者にとても優しい公式チュートリアル