FastAPI でパスは異なるがパス パラメーターが同じである複数の API エンドポイント
FastAPI で、パスは異なるがパス パラメーターが同じである API エンドポイントを定義するエンドポイントを順番に宣言することで実現できます。ただし、共有パス パラメーターを持つ他のエンドポイントがトリガーされたときに、ルーターで宣言された最初のエンドポイントが、意図したエンドポイントの代わりに呼び出されるときに、一般的な問題が発生します。
この問題は、FastAPI がエンドポイントを出現順に評価するために発生します。ルーターの中。したがって、共有パス パラメーター (/project/{project_id}/...) を持つエンドポイントが最初に定義されている場合、追加のパス パラメーターに関係なく、エンドポイントが最初に評価され、そのパスへのすべてのリクエストが処理されます。
解決策:
この問題を解決するには、個別のパス パラメーターを持つエンドポイントが、共有パス パラメーターを持つエンドポイントより前に宣言されていることを確認します。これにより、指定された特定のパスに基づいて正しいエンドポイントが確実にトリガーされます。
たとえば、次の改訂されたルーターを考えてみましょう。
<code class="python"># GET API Endpoint 2 @router.get("/project/details/{project_id}") # ... # GET API Endpoint 3 @router.get("/project/metadata/{project_id}") # ... # GET API Endpoint 1 @router.get("/project/{project_id}/{employee_id}") # ...</code>
この更新されたルーターでは、エンドポイントは一意のパスを持ちます。パラメーター (/project/details/{project_id} および /project/metadata/{project_id}) が最初に宣言されます。その結果、これらのエンドポイントがトリガーされると、対応するコントローラー メソッドが正しく実行され、コントローラー実行の不一致の問題は解決されます。
以上がFastAPI で、パスは異なるがパス パラメーターが同じである複数の API エンドポイントを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。