Python Falcon - 資源類



Falcon 的設計借鑑了 REST 架構風格的幾個關鍵概念。REST 代表表述性狀態轉移(Representational State Transfer)。REST 定義了 Web 應用程式的架構應該如何執行。

REST 是一種基於資源的架構。在這裡,REST 伺服器託管的所有內容,無論是檔案、影像還是資料庫表中的行,都被視為資源,這些資源可能有多種表示形式。REST API 提供對這些資源的受控訪問,以便客戶端可以檢索和修改它們。

伺服器上的資源應該只有一個統一資源識別符號 (URI)。它只標識資源;它不指定對該資源執行什麼操作。相反,使用者從一組標準方法中選擇。HTTP 動詞或方法用於對資源進行操作。POST、GET、PUT 和 DELETE 方法分別執行建立、讀取、更新和刪除操作。

Falcon 使用普通的 Python 類來表示資源。這樣的類充當應用程式中的控制器。它將傳入的請求轉換為一個或多個內部操作,然後根據這些操作的結果組合響應回客戶端。

Python Falcon Resource

每個資源類都定義了各種“響應器”方法,每個方法對應資源允許的一種 HTTP 方法。響應器名稱以“on_”開頭,並根據它們處理的 HTTP 方法命名,例如on_get()、on_post()、on_put()等。

在上文中使用的hellofalcon.py示例程式碼中,HelloResource(資源類)有一個on_get()響應器方法。響應器必須始終定義至少兩個引數才能接收 Request 和 Response 物件。

import falcon
class HelloResource:
   def on_get(self, req, resp):
      """Handles GET requests"""
      resp.status = falcon.HTTP_200
      resp.content_type = falcon.MEDIA_TEXT
      resp.text = (
         'Hello World'
      )

對於 ASGI 應用,響應器必須是協程函式,即必須使用async關鍵字定義。

class HelloResource:
   async def on_get(self, req, resp):
      """Handles GET requests"""
      resp.status = falcon.HTTP_200
      resp.content_type = falcon.MEDIA_TEXT
      resp.text = (
         'Hello World'
      )

Request 物件表示傳入的 HTTP 請求。可以透過此物件訪問請求標頭、查詢字串引數以及與請求相關的其他元資料。

Response 物件表示應用程式對請求的 HTTP 響應。此物件的屬性和方法設定狀態、標頭和主體資料。它還公開了一個類似字典的上下文屬性,用於將任意資料傳遞給 Hook 和其他中介軟體方法。

請注意,上述示例中的HelloResource只是一個普通的 Python 類。它可以有任意名稱;但是,約定是將其命名為xxxResource

廣告
© . All rights reserved.