
648
|
第 20 章 HTTP 網路服務
resp.stream_len = sum(len(x) for x in resp_body)
app = falcon.API()
greet = Greeter()
app.add_route('/', greet)
這個 Falcon 範例僅顯示了如何使用 Falcon 所提供的一些基本構建組塊
(building blocks): API、一個資源類別,以及一個實體,準備回應
(在這種情況中,設定
resp.stream
是最自然的方式,因為我們已經在
resp_body
中準備了回應主體的字串片段所成的一個串列;
resp.body =
''.join(resp_body)
也是可以接受的)。這個範例也展示了如何藉由設定並
使用一個 cookie,在相同瀏覽器與伺服器的多個互動之間,維持最底限的
狀態連續性。
如果這個app 有多個資源和responder 方法,它可能就會想要設定
lastvisit
cookie,無論那個 app 是透過哪個資源和方法被「訪問」的。這
裡示範如何編寫一個適當的中介軟體類別,並以前述類別的一個實體實體
化
falcon.API
:
class LastVisitSettingMiddleware(object):
def process_request(self, req, resp):
now = datetime.datetime.now()
resp.set_cookie('lastvisit', now.ctime(), ...