[英]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.