ホームページ  >  記事  >  バックエンド開発  >  FastAPI で、パスは異なるがパス パラメーターが同じである複数の API エンドポイントを処理するにはどうすればよいですか?

FastAPI で、パスは異なるがパス パラメーターが同じである複数の API エンドポイントを処理するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 19:56:03512ブラウズ

How do I handle multiple API endpoints with different paths but the same path parameter in FastAPI?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。