start fastapi
2020
Starletteフレームワークで開発された使いやすいWebアプリであるFastapiに基づくバージョン2021
pip3 install -r ./requirements.txtWebアプリケーションは、オニオンスタイル〜に基づいています
ディレクトリ構造は次のとおりです。
__init__.pyが含まれています__init__.pyが含まれているため、他のプロジェクトで再利用できるようになります./main.pyを実行して、例を開始します。
内部の手順は次のとおりです。
./main.py cmd argsの内部で構成が./cfg/{env}を読み込んでから、 uvicorn.runを呼び出して、fastapiアプリを./app/__init__.pyで開始します./app/__init__.pyで、コアモジュールとユーザーハンドラー/モデル/サービスは、Fastapiアプリのstartupイベントでロードされます起動スクリプトを内部に配置できます./misc/build
ロジックを構築するには、一般的な手順が次のとおりです。
./main.pyデフォルトで開発環境でサーバーを実行します。ホットレロードが有効になっています./app/handlerにハンドラーを追加し、対応するimport & APP.include_routerコードを./app/__init__.pyに追加します./app/modelにデータモデルを追加し、 ./app/service serviceにサービスを追加します./app/middleware middlewareにMiddleWaresを追加しますコーディングのためのいくつかのヒント:
/docsを取得しますasync def関数)の使用を避けてください。 def関数は、異なるスレッドで呼び出されます./coreのコードは共有可能である必要があります(他のプロジェクトの場合)、 ./app appのコードは現在のプロジェクトに適合する必要があります./misc/dev/gen_code.py使用して、ハンドラー、モデル、サービスのテンプレートコードを生成できます。プロジェクトルートディレクトリとしてワーキングディレクトリを使用して実行しますpydantic.BaseModelに基づくコードモデル、それは強力です処理された要求のほとんどには、200のステータスコードを含める必要があります
簡単な解決策は、 Respモデルを./core/model/handler.pyで使用して、ハンドラーの応答ボディを生成することです
{
"success": bool,
"message": str,
"code": IntEnum,
"data": Any,
}
Resp.okを使用して成功応答を生成し、 Resp.errを使用してエラー応答を生成します
テストハンドラー./app/handler/test.pyには、WSハンドラーの例が含まれています
それについてもっと知るには、WebSocketドキュメントを参照してください
./misc/build/pack.shを実行して、プロジェクトを./misc/build/start-fastapi.tar.gzに詰めます
Docker展開の例については./misc/build/Dockerfileを参照してください