2017-10-18 56 views
1

如何在Flask中設置響應的HTTP狀態文本?在Flask響應中設置HTTP狀態文本

我知道我可以返回一個字符串的狀態碼

@app.route('/knockknock') 
def knockknock(): 
    return "sleeping, try later", 500 

但是,套在身上,我想改變從「內部服務器錯誤」 HTTP狀態文字爲「睡眠,稍後再試」。

看來在Flask/Werkzeug中這是不可能的。這在任何地方都沒有提到。但也許我錯過了什麼?

回答

1

以下內容將適用於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 
+0

簡單而甜美 – sba

0

也許這個文檔會有幫助,你可以定製你自己的錯誤頁面。

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" 

作品。

對不起,誤會。

+0

我沒有在該文檔中看到任何關於HTTP狀態文本的提及。 – sba

0

我不是這方面的專家,但恐怕這隻會通過的monkeypatching是可能的。

燒瓶返回werkzeug Response對象,並且似乎狀態代碼的原因是hardcodedhttp.py

同樣,一些monkeypatching可能已經足以改變你的應用程序,但是。