「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > FASTAPIで異なるパスと同じパスパラメーターで複数のAPIエンドポイントを定義する方法は?

FASTAPIで異なるパスと同じパスパラメーターで複数のAPIエンドポイントを定義する方法は?

2025-03-24に投稿されました
ブラウズ:922

How to Define Multiple API Endpoints with Different Paths and the Same Path Parameter in FastAPI?

Fastapiの異なるパスと同じパスパラメーターを持つ複数のAPIエンドポイントを定義します

fastapiでは、異なるパスで複数のAPIエンドポイントを宣言しますが、同じパスパラメーターが予期しないルートマッチング挙動につながる可能性があります。 APIエンドポイント1 @router.get( "/project/{project_id}/{employee_id}") async def method_one(project_id:str、employee_id:str、...): #... #APIエンドポイント2を取得します @router.get( "/project/details/{project_id}") async def method_two(project_id:str、...): #... #APIエンドポイントを取得します3 @router.get( "/project/metadata/{project_id}") async def method_three(project_id:str、...): #...

このシナリオでは、APIエンドポイント2と3が呼び出されると、エンドポイント1、つまりmethod_one()で定義されているコントローラーメソッドを実行します。これは、APIがエンドポイントをシーケンスで評価するためです。エンドポイントは順次評価されるため、より具体的なパスを持つエンドポイントを最初に宣言する必要があります。したがって、正しい宣言命令は次のとおりです。 @router.get( "/project/details/{project_id}") async def method_two(project_id:str、...): #... #APIエンドポイント2を取得します @router.get( "/project/metadata/{project_id}") async def method_three(project_id:str、...): #... #APIエンドポイントを取得します3 @router.get( "/project/{project_id}/{employee_id}") async def method_one(project_id:str、employee_id:str、...): #...

この順序に従って、エンドポイント2と3が呼び出されると、対応するメソッドmethod_two()およびmethod_three()は意図したとおりに実行されます。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3