Maison  >  Article  >  développement back-end  >  Comment gérer plusieurs points de terminaison d'API avec des chemins différents mais le même paramètre de chemin dans FastAPI ?

Comment gérer plusieurs points de terminaison d'API avec des chemins différents mais le même paramètre de chemin dans FastAPI ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 19:56:03512parcourir

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

Plusieurs points de terminaison d'API avec des chemins différents mais le même paramètre de chemin dans FastAPI

Dans FastAPI, définition de points de terminaison d'API avec des chemins différents mais le même paramètre de chemin peut être réalisé en déclarant les points finaux dans l'ordre. Cependant, un problème courant survient lorsque le premier point de terminaison déclaré dans le routeur est appelé à la place du point de terminaison prévu lorsque d'autres points de terminaison avec un paramètre de chemin partagé sont déclenchés.

Ce problème se produit car FastAPI évalue les points de terminaison dans l'ordre dans lequel ils apparaissent. dans le routeur. Par conséquent, si le point de terminaison avec un paramètre de chemin partagé (/project/{project_id}/...) est défini en premier, il sera évalué en premier et traitera toutes les requêtes vers ce chemin, quel que soit le paramètre de chemin supplémentaire.

Solution :

Pour résoudre ce problème, assurez-vous que les points de terminaison avec des paramètres de chemin distincts sont déclarés avant le point de terminaison avec un paramètre de chemin partagé. Cela garantit que le point de terminaison correct est déclenché en fonction du chemin spécifique fourni.

Par exemple, considérons le routeur révisé suivant :

<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>

Dans ce routeur mis à jour, les points de terminaison avec le chemin unique les paramètres (/project/details/{project_id} et /project/metadata/{project_id}) sont déclarés en premier. En conséquence, lorsque ces points de terminaison sont déclenchés, la méthode du contrôleur correspondante sera correctement exécutée et le problème d'exécution du contrôleur incompatible est résolu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn