如何在Flask中設置響應的HTTP狀態文本?在Flask響應中設置HTTP狀態文本
我知道我可以返回一個字符串的狀態碼
@app.route('/knockknock')
def knockknock():
return "sleeping, try later", 500
但是,套在身上,我想改變從「內部服務器錯誤」 HTTP狀態文字爲「睡眠,稍後再試」。
看來在Flask/Werkzeug中這是不可能的。這在任何地方都沒有提到。但也許我錯過了什麼?
如何在Flask中設置響應的HTTP狀態文本?在Flask響應中設置HTTP狀態文本
我知道我可以返回一個字符串的狀態碼
@app.route('/knockknock')
def knockknock():
return "sleeping, try later", 500
但是,套在身上,我想改變從「內部服務器錯誤」 HTTP狀態文字爲「睡眠,稍後再試」。
看來在Flask/Werkzeug中這是不可能的。這在任何地方都沒有提到。但也許我錯過了什麼?
以下內容將適用於Flask。 Flask可以在返回響應時使用狀態碼或描述。該描述顯然可以包含代碼(從客戶端它是相同的)。但請注意,這不會從Flask端生成默認錯誤描述。
from flask import Flask
app = Flask(__name__)
@app.route('/knockknock')
def knockknock():
return "", "500 sleeping, try later"
這裏是curl命令的輸出,
curl -i http://127.0.0.1:5000/knockknock
HTTP/1.0 500 sleeping, try later
Content-Type: text/html; charset=utf-8
也許這個文檔會有幫助,你可以定製你自己的錯誤頁面。
http://flask.pocoo.org/docs/0.12/patterns/errorpages/
通過審查源代碼,app.py可以找到
if status is not None:
if isinstance(status, string_types):
rv.status = status
else:
rv.status_code = status
所以使用
@app.route('/test')
def tt():
return "status error", "500 msg"
作品。
對不起,誤會。
我沒有在該文檔中看到任何關於HTTP狀態文本的提及。 – sba
我不是這方面的專家,但恐怕這隻會通過的monkeypatching是可能的。
燒瓶返回werkzeug Response
對象,並且似乎狀態代碼的原因是hardcoded在http.py
。
同樣,一些monkeypatching可能已經足以改變你的應用程序,但是。
簡單而甜美 – sba