網站首頁 編程語言 正文
導讀
本篇博客我們將全面了解 Flask 中關于請求的相關設置,開始前你需要先配置 Flask 的基礎框架。
from flask import Flask, make_response
app = Flask(__name__)
@app.route('/')
def index():
response = make_response("Hello, 夢想橡皮擦")
response.headers['Content-Type'] = 'text/html; charset=utf-8'
return response
if __name__ == '__main__':
app.run()
運行代碼,得到下述效果。
Python Flask 設置響應頭
response.headers 屬性
response.headers 是 Flask 框架中的一個屬性,它是一個字典類型,用于存儲響應頭信息。這個屬性可以在視圖函數中直接使用,用于設置響應頭的信息。
比如在視圖函數中,可以使用下面的代碼來設置 Content-Type 響應頭:
response.headers['Content-Type'] = 'text/plain'
如果你想要設置其它響應頭,可以使用同樣的方式,例如:
response.headers['X-My-Header'] = 'Xiang_Pi_Ca'
通過開發者工具,可以查看到自定義的響應頭內容。
注意,在設置響應頭之前,你需要創建一個響應對象。可以使用 flask.make_response() 函數來創建一個響應對象,例如:
from flask import make_response
response = make_response("Hello, Xiang_Pi_Ca!")
response.headers['Content-Type'] = 'text/plain'
flask.abort() 函數返回特定狀態碼
使用 flask.abort() 函數來返回特定狀態碼的響應,并設置響應頭。例如,在請求中包含無效參數時返回 400 Bad Request:
from flask import Flask, abort
app = Flask(__name__)
@app.route('/')
def index():
# 模擬參數錯誤
invalid_parameter = True
if invalid_parameter:
abort(400)
return "Hello, Xiang_Pi_Ca!"
if __name__ == '__main__':
app.run()
代碼運行效果:
Flask 中可設置的響應頭參數
在 Flask 中,你可以設置任何 HTTP 協議定義的響應頭參數。
常用的響應頭包括:
- Content-Type:用于指定響應體的 MIME 類型。例如,'Content-Type': 'text/html' 表示響應體是 HTML 文檔。
- Content-Length: 用于指定響應體的長度。
- Location:用于重定向。例如,'Location': 'https://pachong.vip' 會導致瀏覽器重定向到 https://pachong.vip。
- Cache-Control: 用于控制緩存,例如,'Cache-Control': 'no-cache' 表示瀏覽器不應緩存響應。
- Expires: 用于指定緩存過期時間。
- Etag:用于指定資源的 ETag 值。
- Server: 用于指定服務器的名稱和版本。
- Access-Control-Allow-Origin: 用于控制跨域資源共享。
其他關于響應頭的配置
除了在視圖函數中設置響應頭之外,Flask 還提供了其他方式來配置響應頭。
使用中間件
中間件可以在請求和響應之間添加額外的處理。你可以使用中間件來設置響應頭。
中間件是一種在請求和響應之間添加額外處理的機制,可以使用中間件來設置響應頭。
下面的代碼實現了一個中間件,在每個請求之前設置 Content-Type 和 X-My-Ca 響應頭。
from flask import Flask, request,make_response
app = Flask(__name__)
@app.before_request
def before_request():
response = make_response()
response.headers['Content-Type'] = 'application/json'
response.headers['X-My-Ca'] = 'xiangpica_demo'
return response
@app.route('/')
def index():
return "Hello, 夢想橡皮擦!"
使用裝飾器
裝飾器是一種在不改變視圖函數本身的情況下添加額外處理的方法。
下面的代碼實現了一個裝飾器,在每個視圖函數執行之前設置 Content-Type 和 X-My-Ca 響應頭。
from flask import Flask, request, make_response
from functools import wraps
app = Flask(__name__)
def set_headers(f):
@wraps(f)
def decorated_function(*args, **kwargs):
response = make_response(f(*args, **kwargs))
response.headers['Content-Type'] = 'application/json'
response.headers['X-My-Header'] = 'xiangpica_demo_'
return response
return decorated_function
@app.route('/')
@set_headers
def index():
return "Hello, 夢想橡皮擦!"
if __name__ == '__main__':
app.run()
上述代碼可以實現每當路由被調用時,裝飾器都會在視圖函數之前設置 Content-Type 和 X-My-Ca 響應頭。
使用配置
應用程序配置是一種在不修改應用程序代碼的情況下更改應用程序行為的方法。
from flask import Flask, make_response
app = Flask(__name__)
app.config.update(
RESPONSE_HEADERS={
'Content-Type': 'application/json',
'X-My-Ca': 'xiangpica_demo_'
}
)
@app.route('/')
def index():
response = make_response()
for key, value in app.config['RESPONSE_HEADERS'].items():
response.headers[key] = value
return response
if __name__ == '__main__':
app.run()
上述代碼在配置中定義了 'Content-Type' 和 'X-My-Ca' 兩個響應頭,在路由函數中就可以使用 make_response() 函數來創建響應對象,然后遍歷配置中的響應頭來添加響應頭了,該寫法的優點是,我們可以在不修改應用程序代碼的情況下更改響應頭, 也可以根據環境來設置不同的響應頭。
使用第三方擴展
Flask 有許多第三方擴展可以幫助你更簡單的配置響應頭, 比如 Flask-Cors,Flask-Security 等,這些內容以后用單獨的博客進行說明。
原文鏈接:https://blog.csdn.net/hihell/article/details/128762650
相關推薦
- 2023-05-20 Android內存泄漏導致原因深入探究_Android
- 2022-04-04 小程序Arrow function should not return assignment
- 2022-12-26 Qt利用QSortFilterProxyModel代理實現自定義排序與聯合過濾_C 語言
- 2022-05-25 在Windows平臺安裝Jenkins_win服務器
- 2023-07-29 修改(elementui)el-table底層背景色
- 2023-04-26 Python實現計算函數或程序執行時間_python
- 2023-04-20 flex 的 三個參數:flex-grow、flex-shrink、flex-basis
- 2022-04-09 SpringMVC 基礎配置文件(簡潔版本)
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支