J'utilise Flask 0.9 dans un projet API, et il semble y avoir un bug sur le décorateur @router, ou je fais quelque chose d'extrêmement mauvais ici.
J'ai ces 2 URL, /twitter/authorize et /facebook/authorize, et j'utilise le @route pour cela. Le problème est que lorsque je demande /twitter/authorize, c'est en fait la fonction /facebook/authorize qui y répond.
Si je commente les lignes de la fonction et du routage de /facebook/authorize, /twitter/authorize répond à la demande (comme il se doit).
J'ai essayé d'imprimer la requête.path dans /facebook/authorize, et cela a retourné
/twitter/authorize
Mais comment est-ce possible, puisque c'est dans /facebook/authorize (et c'est l'url demandée) ?
Le code pour les deux fonctions :
@app.route('/facebook/authorize')
def facebook_autorize():
callback = request.args.get('callback', None)
if not callback:
return error_as_json("must send callback")
scope = request.args.get('scope', 'email')
api = instantiate_facebook()
response = api.authorize(callback = callback)
response = jsonify(info = response)
response.status_code = 200
return response
@app.route('/twitter/authorize')
def twitter_autorize():
callback = request.args.get('callback', None)
api = instantiate_api()
response = api.authorize(callback = callback)
response = jsonify(info = response)
response.status_code = 200
return response
Les appels à instantiate_api() et instantiate_facebook() renvoient simplement une instance valide de mes clients facebook et twitter.
Les deux fonctions portent bien sûr des noms différents. Je ne comprends vraiment pas ce qui se passe. S'agit-il d'un bug ? Quelqu'un a-t-il déjà été confronté à ce problème ? Si c'est un bogue, quelqu'un peut-il suggérer une solution de contournement ?