我abort在 API 方法中使用 Flask 的函式來提前停止執行并回傳錯誤:
abort(404, errMsg)
這將errMsg在預先格式化的 HTML 模板中回傳:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>(errMsg)</p>
但是,由于我正在構建 API,而不是網頁,因此我希望將錯誤作為純文本回傳。我在自定義錯誤頁面上看過檔案頁面,但我寧愿為每個錯誤重新定義abort 一次,而不是必須為每個錯誤代碼定義它。有沒有辦法做到這一點?
uj5u.com熱心網友回復:
您可以將werkzeug.exceptions.HTTPException.get_body(用于獲取格式化 HTML 的方法)更改為您自己的get_body函式并回傳純文本。
并且仍然很容易為用戶更改錯誤訊息。
from flask import Flask, abort
import werkzeug.exceptions
def get_body(self, environ=None, scope=None):
return f'{self.code}, {self.name}, {self.description or ""}'
werkzeug.exceptions.HTTPException.get_body = get_body
app = Flask(__name__)
@app.route('/')
def home():
abort(404)
@app.route('/nothome')
def not_home():
abort(500, 'some server error happened')
if __name__ == '__main__':
app.run(debug=True)
uj5u.com熱心網友回復:
werkzeug您可以提供一個Response物件,而不是重新定義內部類abort:
from flask import abort as fabort
def abort(status_code, message):
response = make_response(f'{status_code}\n{message}')
response.status_code = status_code
fabort(response)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/349228.html
