Comme vous n'avez pas spécifié qu'il doit être exécuté en ligne de commande, ce qui suit pourrait facilement être retourné dans json pour un tableau de bord ou une autre interface non-ligne de commande. De toute façon, le résultat et la sortie ne devraient pas être mélangés du point de vue de la conception. C'est une mauvaise conception de programme, même s'il s'agit d'un tout petit programme. Le résultat ci-dessous pourrait alors être utilisé dans une application Web, une ligne de commande ou tout autre élément qui ingère json.
Vous n'avez pas non plus spécifié que vous deviez connaître la fonction python associée à chaque route, donc cela répond plus précisément à votre question initiale.
J'utilise ci-dessous pour ajouter moi-même la sortie à un tableau de bord de surveillance. Si vous voulez les méthodes d'itinéraire disponibles (GET, POST, PUT, etc.), vous devrez les combiner avec d'autres réponses ci-dessus.
La fonction repr () de Rule se charge de convertir les arguments requis dans la route.
def list_routes():
routes = []
for rule in app.url_map.iter_rules():
routes.append('%s' % rule)
return routes
La même chose en utilisant une compréhension de liste:
def list_routes():
return ['%s' % rule for rule in app.url_map.iter_rules()]
Exemple de sortie:
{
"routes": [
"/endpoint1",
"/nested/service/endpoint2",
"/favicon.ico",
"/static/<path:filename>"
]
}
url = url_for(rule.endpoint)
. Je viens de recevoir cette erreurBuildError: ('DeleteEvent', {}, None)
. Au lieu de cela, pour obtenir l'url que je viens de faireurl = rule.rule
. Une idée de la raison pour laquelle votre méthode ne fonctionne pas pour moi?