J'utilise webapp2 pour le développement dans App Engine. Ce que j'aimerais faire, c'est envoyer une réponse personnalisée au format JSON en cas d'erreur. Par exemple, lorsque la longueur de la requête est supérieure à un seuil, répondre avec HTTP 400 et le corps de la réponse.
{'error':'InvalidMessageLength'}
Dans webapp2, il est possible d'attribuer des gestionnaires d'erreurs pour certaines exceptions. Par exemple :
app.error_handlers[400] = handle_error_400
Où handle_error_400 est le suivant :
def handle_error_400(request, response, exception):
response.write(exception)
response.set_status(400)
Lorsque webapp2.RequestHandler.abort(400)
est exécuté, le code ci-dessus est exécuté.
Comment est-il possible d'avoir différents formats de réponse (HTML et JSON) de manière dynamique sur la base de la configuration ci-dessus ? C'est-à-dire, comment est-il possible d'appeler différentes versions de handle_error_400
fonction ?