Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

724
Vistas
¿Cómo puedo enumerar todas las rutas URL definidas en FastAPI?

Supongamos que tengo un proyecto FastAPI que contiene más de 100 puntos finales de API. ¿Cómo puedo enumerar todas las API/rutas?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Para obtener todos los patrones de URL posibles, necesitamos obtener acceso a las rutas de URL definidas, que es un atributo de la ejecución de la instancia de la aplicación.

Podemos hacer eso al menos de dos maneras,

  1. Uso de la aplicación FastAPI : esto es útil cuando tiene acceso a la instancia de FastAPI
  2. Uso de la instancia de Request : esto es útil cuando tiene acceso a las solicitudes entrantes, pero no a la instancia de FastAPI.

Ejemplo completo

 from fastapi import FastAPI, Request app = FastAPI() @app.get(path="/", name="API Foo") def foo(): return {"message": "this is API Foo"} @app.post(path="/bar", name="API Bar") def bar(): return {"message": "this is API Bar"} # Using FastAPI instance @app.get("/url-list") def get_all_urls(): url_list = [{"path": route.path, "name": route.name} for route in app.routes] return url_list # Using Request instance @app.get("/url-list-from-request") def get_all_urls_from_request(request: Request): url_list = [ {"path": route.path, "name": route.name} for route in request.app.routes ] return url_list
over 4 years ago · Santiago Trujillo Denunciar

0

Traté de proporcionar una edición de la respuesta original, pero no me dejó.

Otro caso de uso: suponga que no está en el archivo de la aplicación principal y no tiene acceso a la app en el espacio de nombres. En ese caso, la documentación de Starlette dice que también tenemos acceso a la instancia de la aplicación desde la solicitud como request.app . Por ejemplo, si en el archivo principal solo tiene la instancia de la aplicación y no desea tener ningún punto final en el archivo principal, sino que todos estén en enrutadores separados.

principal.py
 from fastapi import FastAPI # then let's import all the various routers we have # please note that api is the name of our package from api.routers import router_1, router_2, router_3, utils app = FastAPI() app.include_router(router_1) app.include_router(router_2) app.include_router(router_3) app.include_router(utils)

Tengo mi punto final list_endpoints en el enrutador utils. Para poder enumerar todas las rutas de la aplicación, haría lo siguiente:

utils.py
 from fastapi import APIRouter, Request router = APIRouter( prefix="/utils", tags=["utilities"] ) @router.get('/list_endpoints/') def list_endpoints(request: Request): url_list = [ {'path': route.path, 'name': route.name} for route in request.app.routes ] return url_list

Tenga en cuenta que en lugar de usar app.routes , usé request.app.routes y tengo acceso a todos ellos. Si ahora accede a /utils/list_endpoints obtendrá todas sus rutas.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda