en Fastapi, declarando puntos finales de API múltiples con diferentes rutas, pero el mismo parámetro de ruta puede conducir a un comportamiento inesperado. Punto final de la API 1 @router.get ("/proyecto/{proyect_id}/{empleado_id}") async def métod_one (proyect_id: str, empleado_id: str, ...): # ... # Obtener el punto final API 2 @router.get ("/proyecto/detalles/{proyect_id}") async def métod_two (proyect_id: str, ...): # ... # Obtener el punto final API 3 @router.get ("/proyecto/metadata/{Project_id}") async def métod_three (Project_id: Str, ...): # ...
En este escenario, cuando se llaman los puntos finales de la API 2 y 3, ejecutan el método del controlador definido en el punto final 1, a saber, métodos (). Esto se debe a cómo FastAPI evalúa los puntos finales en la secuencia.
# 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, ...):
# ...
para garantizar la coincidencia de ruta adecuada, debe declarar puntos finales en el orden de su especificidad de ruta. Debido a que los puntos finales se evalúan secuencialmente, los puntos finales con rutas más específicas deben declararse primero. En el ejemplo anterior, el punto final para/proyect/{Project_id}/{Employee_id} es más específico que el punto final para/Project/Detects/{Project_ID}. Por lo tanto, la orden de declaración correcta es:
# Obtener el punto final API 1 @router.get ("/proyecto/detalles/{proyect_id}") async def métod_two (proyect_id: str, ...): # ... # Obtener el punto final API 2 @router.get ("/proyecto/metadata/{Project_id}") async def métod_three (Project_id: Str, ...): # ... # Obtener el punto final API 3 @router.get ("/proyecto/{proyect_id}/{empleado_id}") async def métod_one (proyect_id: str, empleado_id: str, ...): # ...
siguiendo este orden, cuando se llamen los puntos finales 2 y 3, los métodos correspondientes métodos_two () y método_three () se ejecutarán según lo previsto.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3