在客戶端 和 服務器 交互的過程中,有些準備工作或掃尾工作需要處理,比如:
1.在請求開始時,建立數據庫連接;
2.在請求開始時,根據需求進行權限校驗;
3.在請求結束時,指定數據的交互格式;
爲了讓每個視圖函數避免編寫重複功能的代碼,Flask提供了通用設施的功能,即請求鉤子。
請求鉤子是通過裝飾器的形式實現的,Flask支持如下四種請求鉤子:
- before_first_request
-
在處理第一個請求前執行
-
- before_request
- 在每次請求前執行
- 如果在某修飾的函數中返回了一個響應,視圖函數將不再被調用
- after_request
- 如果沒有拋出錯誤,在每次請求後執行
- 接受一個參數:視圖函數作出的響應
- 在此函數中可以對響應值在返回之前做最後一步修改處理
- 需要將參數中的響應在此參數中進行返回
- teardown_request
- 在每次請求後執行(就算有錯誤拋出也要執行)
- 接受一個參數:錯誤信息,如果有相關錯誤拋出
案例:
@api.after_request
def after_request(response):
"""設置默認的響應報文格式爲 application/json"""
# 如果響應報文 response 的 Content-Type 是以 text 開頭,則將其改爲
# 默認的 json 類型
if response.headers.get("Content-Type").startswith("text"):
response.headers["Content-Type"] = "application/json"
return respon