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