Como você não especificou que ele deve ser executado na linha de comandos, o seguinte poderia ser facilmente retornado em json para um painel ou outra interface que não seja da linha de comandos. O resultado e a saída realmente não devem ser misturados da perspectiva do design. É um design de programa ruim, mesmo que seja um programa minúsculo. O resultado abaixo pode ser usado em um aplicativo Web, linha de comando ou qualquer outra coisa que ingira json.
Você também não especificou que precisava conhecer a função python associada a cada rota, portanto, isso responde com mais precisão à sua pergunta original.
Eu uso abaixo para adicionar a saída a um painel de monitoramento. Se você quiser os métodos de rota disponíveis (GET, POST, PUT etc.), será necessário combiná-lo com outras respostas acima.
O repr () da regra cuida da conversão dos argumentos necessários na rota.
def list_routes():
routes = []
for rule in app.url_map.iter_rules():
routes.append('%s' % rule)
return routes
A mesma coisa usando uma compreensão de lista:
def list_routes():
return ['%s' % rule for rule in app.url_map.iter_rules()]
Saída de amostra:
{
"routes": [
"/endpoint1",
"/nested/service/endpoint2",
"/favicon.ico",
"/static/<path:filename>"
]
}
url = url_for(rule.endpoint)
. Acabei de receber este erroBuildError: ('DeleteEvent', {}, None)
. Em vez disso, para obter o URL que acabei de receberurl = rule.rule
. Alguma idéia de por que seu método não funciona para mim?