- 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 - App 類
- Python Falcon - 路由
- Falcon - 字尾響應器
- Python Falcon - Inspect 模組
- Python Falcon - Jinja2 模板
- Python Falcon - Cookie
- Python Falcon - 狀態碼
- Python Falcon - 錯誤處理
- Python Falcon - Hook
- 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 - 資源類
Falcon 的設計借鑑了 REST 架構風格的幾個關鍵概念。REST 代表表述性狀態轉移(Representational State Transfer)。REST 定義了 Web 應用程式的架構應該如何執行。
REST 是一種基於資源的架構。在這裡,REST 伺服器託管的所有內容,無論是檔案、影像還是資料庫表中的行,都被視為資源,這些資源可能有多種表示形式。REST API 提供對這些資源的受控訪問,以便客戶端可以檢索和修改它們。
伺服器上的資源應該只有一個統一資源識別符號 (URI)。它只標識資源;它不指定對該資源執行什麼操作。相反,使用者從一組標準方法中選擇。HTTP 動詞或方法用於對資源進行操作。POST、GET、PUT 和 DELETE 方法分別執行建立、讀取、更新和刪除操作。
Falcon 使用普通的 Python 類來表示資源。這樣的類充當應用程式中的控制器。它將傳入的請求轉換為一個或多個內部操作,然後根據這些操作的結果組合響應回客戶端。
每個資源類都定義了各種“響應器”方法,每個方法對應資源允許的一種 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。