"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment définir plusieurs points d'extrémité API avec différents chemins et le même paramètre de chemin dans FastAPI?

Comment définir plusieurs points d'extrémité API avec différents chemins et le même paramètre de chemin dans FastAPI?

Publié le 2025-03-24
Parcourir:977

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

Définition de plusieurs points de terminaison de l'API avec différents chemins et le même paramètre de chemin dans Fastapi

dans Fastapi, déclarant plusieurs points de terminaison API avec différents chemins mais le même paramètre de chemin peut conduire à un comportement de correspondance de route inattendu. Point de terminaison de l'API 1 @ router.get ("/ project / {project_id} / {employee_id}") Async Def Method_One (Project_id: Str, Employee_ID: Str, ...): # ... # Obtenez un point de terminaison de l'API 2 @ router.get ("/ project / de détails / {project_id}") Async Def Method_two (project_id: str, ...): # ... # Obtenez un point de terminaison de l'API 3 @ router.get ("/ project / métadata / {project_id}") Async Def Method_There (Project_id: Str, ...): # ...

Dans ce scénario, lorsque les points de terminaison API 2 et 3 sont appelés, ils exécutent la méthode du contrôleur définie dans Endpoint 1, à savoir méthode_one (). Cela est dû à la façon dont FastAPI évalue les points de terminaison dans la séquence.

# GET API Endpoint 1
@router.get("/project/{project_id}/{employee_id}")
async def method_one(project_id: str, employee_id: str, ...):

    # ...

# GET API Endpoint 2
@router.get("/project/details/{project_id}")
async def method_two(project_id: str, ...):

    # ...

# GET API Endpoint 3
@router.get("/project/metadata/{project_id}")
async def method_three(project_id: str, ...):

    # ...
Pour assurer la correspondance appropriée de l'itinéraire, vous devez déclarer des points de terminaison dans l'ordre de leur spécificité de chemin. Étant donné que les points de terminaison sont évalués séquentiellement, les points de terminaison avec des chemins plus spécifiques doivent être déclarés en premier.

Dans l'exemple ci-dessus, le point de terminaison pour / project / {project_id} / {employee_id} est plus spécifique que le point de terminaison pour / project / de détails / {project_id}. Par conséquent, l'ordre de déclaration correct est:

# Obtenez un point de terminaison de l'API 1 @ router.get ("/ project / de détails / {project_id}") Async Def Method_two (project_id: str, ...): # ... # Obtenez un point de terminaison de l'API 2 @ router.get ("/ project / métadata / {project_id}") Async Def Method_There (Project_id: Str, ...): # ... # Obtenez un point de terminaison de l'API 3 @ router.get ("/ project / {project_id} / {employee_id}") Async Def Method_One (Project_id: Str, Employee_ID: Str, ...): # ...

en suivant cet ordre, lorsque les points de terminaison 2 et 3 sont appelés, les méthodes correspondantes méthody_two () et méthody_three () seront exécutées comme prévu.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3