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_optionsauto_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 副本。

廣告

© . All rights reserved.