- Python Falcon 教程
- Python Falcon - 首頁
- Python Falcon - 簡介
- Python Falcon - 環境搭建
- Python Falcon - WSGI vs ASGI
- Python Falcon - Hello World(WSGI)
- Python Falcon - Waitress
- Python Falcon - ASGI
- Python Falcon - Uvicorn
- Python Falcon - API 測試工具
- 請求與響應
- Python Falcon - 資源類
- Python Falcon - 應用類
- Python Falcon - 路由
- Falcon - 字尾響應器
- Python Falcon - Inspect 模組
- Python Falcon - Jinja2 模板
- Python Falcon - Cookies
- Python Falcon - 狀態碼
- Python Falcon - 錯誤處理
- Python Falcon - 鉤子
- Python Falcon - 中介軟體
- Python Falcon - CORS
- Python Falcon - WebSocket
- Python Falcon - SQLAlchemy 模型
- Python Falcon - 測試
- Python Falcon - 部署
- Python Falcon 有用資源
- Python Falcon - 快速指南
- Python Falcon - 有用資源
- Python Falcon - 討論
Python Falcon - 請求與響應
HTTP 協議規定客戶端向伺服器傳送 HTTP 請求,伺服器應用特定的業務邏輯並生成響應,然後將響應重定向到客戶端。在客戶端和伺服器之間進行同步傳輸時,Python 框架使用 WSGI 標準,而非同步傳輸則遵循 ASGI 標準。Falcon 支援兩者。
WSGI/ASGI 伺服器在上下文資料中提供 Request 和 Response 物件。這些物件被響應器、鉤子、中介軟體等作為引數使用。對於 WSGI 應用,處理的是 falcon.Request 類的例項。在 ASGI 應用中,它表示 falcon.asgi.Request 類。儘管有所不同,但這兩個類都旨在具有相似的屬性和方法,以最大程度地減少混淆並簡化可移植性。
請求
Request 物件表示 HTTP 請求。由於它由伺服器提供,因此此物件不應由響應器方法直接例項化。此物件提供以下屬性和方法,可在響應器、鉤子和中介軟體方法中使用:
method - 請求的 HTTP 方法(例如,“GET”、“POST”等)
host - Host 請求頭欄位
port - 用於請求的埠。返回給定方案的預設埠(HTTP 為 80,HTTPS 為 443)
uri - 請求的完全限定 URI。
path - 請求 URI 的路徑部分(不包括查詢字串)。
query_string - 請求 URI 的查詢字串部分,不包括前面的“?”字元。
cookies - 名/值 Cookie 對的字典。
content_type - Content-Type 標頭的值,如果標頭缺失則為 None。
stream - 用於讀取請求主體(如果有)的檔案類輸入物件。此物件提供對伺服器資料流的直接訪問,並且不可搜尋。
bounded_stream - stream 的檔案類包裝器
headers - 來自請求的原始 HTTP 標頭
params - 請求查詢引數名稱與其值的對映。
get_cookie_values(name) - 返回 Cookie 標頭中為指定 Cookie 提供的所有值。cookies 屬性的別名。
get_media() - 返回請求流的反序列化形式。類似於 media 屬性。
get_param(name) - 將查詢字串引數的原始值作為字串返回。如果使用 application/x-wwwform-urlencoded 媒體型別釋出了 HTML 表單,則 Falcon 可以自動從請求主體解析引數並將它們合併到查詢字串引數中。要啟用此功能,請透過 App.req_options 將 auto_parse_form_urlencoded 設定為 True。
響應
Response 物件表示伺服器對客戶端的 HTTP 響應。與 Request 物件一樣,Response 物件也不應由響應器直接例項化。
響應器、鉤子函式或中介軟體方法透過訪問以下屬性和方法來操作此物件:
status - HTTP 狀態碼,例如“200 OK”。這可以設定為 http.HTTPStatus 的成員、HTTP 狀態行字串或位元組字串,或整數。Falcon 為常見狀態碼提供了一些常量,以 HTTP_ 為字首,例如:falcon.HTTP_204。
media - 透過 falcon.RequestOptions 配置的媒體處理程式支援的可序列化物件。
text - 表示響應內容的字串。
body - text 的已棄用別名。
data - 表示響應內容的位元組字串。
stream - 表示響應內容的檔案類物件。
content_length - 設定 Content-Length 標頭。當未設定 text 或 data 屬性時,它會手動設定內容長度。
content_type - 設定 Content-Type 標頭。Falcon 為常用媒體型別預定義的常量包括 falcon.MEDIA_JSON、falcon.MEDIA_MSGPACK、falcon.MEDIA_YAML、falcon.MEDIA_XML、falcon.MEDIA_HTML、falcon.MEDIA_JS、falcon.MEDIA_TEXT、falcon.MEDIA_JPEG、falcon.MEDIA_PNG 和 falcon.MEDIA_GIF。
append_header (name, value) - 設定或追加此響應的標頭。用於設定 Cookie。
delete_header (name) - 刪除之前為此響應設定的標頭。
get_header (name) - 檢索給定標頭的原始字串值。
set_cookie (name, value) - 設定響應 Cookie。此方法可以多次呼叫以將一個或多個 Cookie 新增到響應中。
set_header (name, value) - 將此響應的標頭設定為給定值。
set_stream (stream, content_length) - 設定 stream 和 content_length。
unset_cookie (name, domain=None, path=None) - 在響應中取消設定 Cookie。此方法清除 Cookie 的內容,並指示使用者代理立即過期其自己的 Cookie 副本。