Начиная с flask 1.1.x, легко вернуть тело ответа JSON вместе с кодом успеха HTTP, таким как
return {"success": 1, "message": "You did it!"}, 200
Однако, возвращая состояние ошибки HTTP то же самое way
return {"success": 0, "message": "You screwed up."}, 400
, кажется, только возвращает заголовок ответа и сообщение (например, HTTP/1.0 INVALID REQUEST
)
Заголовок типа контента (правильно) говорит application/json
, но тело опорожнить. Это происходит для любого кода состояния класса, отличного от 2xx.
Flask документация подразумевает, что я должен быть в состоянии сделать это, но, похоже, ничего из того, что я пробовал, не работает. Это включает в себя создание специализированных обработчиков ошибок, таких как
@app.errorhandler(400)
def custom400(error):
return jsonify({'message': error})
, а затем вызов abort(400, 'my error message')
, который не работает, поскольку аргумент error
для обработчика не является строкой, переданной abort
, но, всегда является объектом ошибки любого типа ошибки HTTP (например, 410 -> <GONE Gone>
.
Это "нормальное" поведение ответа HTTP или flask делает что-то странное?