10.Flask 中請求鉤子的理解和應用

在客戶端 和 服務器 交互的過程中,有些準備工作或掃尾工作需要處理,比如:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章