Flask 基本概念
Flask 是開放原始碼的 Web「微架構」。 當建立者使用「微架構」一詞時,表示架構會執行 Web 架構的必要工作,但不包括進階功能或應用程式為正常運作所必須遵循的其他特定需求。 這種方法讓 Flask 極具彈性,最適合作為現有後端或 API 的前端,例如 Azure AI 服務!
使用任何架構建立 Web 應用程式時,必須了解幾個核心概念:路由、方法和範本化。 在撰寫程式碼之前,讓我們先探索這些概念。
使用路由回應使用者的要求
當使用者使用 Web 應用程式時,會瀏覽至不同的統一資源定位器 (或 URL),指出其想要執行的動作或搜尋的資訊。 其可直接鍵入位址 (例如 https://adventure-works.com
),或選取包含適當 URL 的連結或按鈕。 在電子商務網站上,您可能會看到類似以下的 URL:
- 表示主要頁面的
https://adventure-works.com/
- 表示 Widget 詳細資訊的
https://adventure-works.com/products/widget
- 可完成購買的
https://adventure-works.com/cart/buy
身為開發人員,我們其實不用擔心 URL 或網域的前半 (本例中為 adventure-works.com)。 應用程式會根據網域名稱後的任何內容 (從 / 開始) 動作。 網域名稱後面的部分即所謂的路由。
路由是動作的路徑。 路由類似點選行動裝置應用程式的按鈕,會指出使用者想要執行的動作。 我們會在 Web 應用程式中註冊不同的路由,以回應應用程式支援的各種要求。
我們在應用程式中透過提供函式,以指出我們希望如何回應特定的路由要求。 路由是函式的地圖。 一般在思考如何撰寫程式碼時,這個概念相當自然。 當我們想要執行特定的動作時會呼叫函式。 我們的使用者也會做一模一樣的事! 但略有不同,使用者會存取路由。
方法或動詞
存取路由的方式很多,即透過所謂的方法或動詞 (這兩個詞彙表示相同的東西,可以交替使用)。 存取路由的方式可提供其他有關使用者要求狀態及使用者想要執行動作的內容。
建立 Web 應用程式時,有許多方法可供使用,但最常用的兩個方法 (我們唯一關注的兩個方法) 是 GET 和 POST。 GET 通常表示使用者要求取得資訊,而 POST 則表示使用者必須向我們傳送某些內容且獲得回應。
注意
無論使用哪個動詞,資訊都一律會傳回給使用者。
使用 GET 和 POST 的常見應用程式流程會繞著使用表單轉。 假設我們建立了可讓使用者註冊郵寄清單的應用程式:
- 使用者透過 GET 存取註冊表單
- 使用者完成表單後選取了 [提交] 按鈕
- 表單中的資訊會使用 POST 傳送回伺服器
- 「成功」訊息就會傳回給使用者
您可能會對使用者未直接指出想要使用的動詞心生懷疑,因為這是由應用程式所控制。 一般而言,如果使用者是經由鍵入或選取連結直接導覽至 URL,會使用 GET 存取頁面。 若選取表單按鈕,則通常會透過 POST 傳送資訊。
注意
因為完整的方法討論超出本課程模組的範圍,所以我們籠統帶過此交談。
範本
超文字標記語言 (HTML) 是用於結構化瀏覽器顯示資訊的語言,而階層式樣式表 (CSS) 則用於管理樣式和版面配置。 建立應用程式時,大部分的 HTML 都是靜態的,即不會變更。 但為動態顯示頁面,我們必須能以程式設計方式將資訊放入 HTML 網頁中。 幾乎每個 Web 架構透過範本都能支援這項需求。
範本可讓您撰寫核心 HTML (或範本),指出動態資訊的預留位置。 最常見的預留位置語法可能是 {{ }}
。 Flask 的範本化引擎 Jinja 就使用此語法。
<h1>Welcome, {{ name }}</h1>
在上例中,我們在 h1
(標頭) 的 HTML 中放入我們希望顯示的文字。 {{ name }}
表示我們想要在歡迎使用之後顯示名為 name
的變數。 使用這個語法就可以利用現有的技能撰寫 HTML,視需要插入動態資訊。