Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

728
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda