[英]How can combine send_file() with another information (E.g., int) in 1 response using Flask
[英]Return an HTTP fail (e.g. 500) response with JSON body from flask?
从flask 1.1.x开始,很容易返回一个JSON响应体以及一个HTTP成功代码,例如
return {"success": 1, "message": "You did it!"}, 200
但是,以相同的方式返回 HTTP 失败状态
return {"success": 0, "message": "You screwed up."}, 400
似乎只返回响应头和消息,(例如HTTP/1.0 INVALID REQUEST
)
Content-type 标头(正确)表示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 做一些奇怪的事情?
事实证明,这比其他任何东西都更像是 PEBKAC。 我在$.ajax.error
处理程序中设置了一个断点,在断点触发时查看浏览器 (chrome) 调试窗口中返回的响应。
但是,直到此处理程序存在之后,响应的正文才可用于调试窗口。 一旦我继续执行error
处理程序,JSON 响应正文就会按预期通过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.