Flask 是一個輕量級的 Python Web 框架,特別適合學習、原型設計與中小型專案。它的設計哲學是「微框架」,提供最小的核心功能,讓開發者可以自行決定要引入哪些擴充元件,使得 Flask 具有極高的彈性與可控性。
安裝 Flask
Flask 是一個 Python 套件,可以透過常見的套件管理工具安裝。根據不同專案管理方式,可以選擇使用 pip
或 poetry
。最簡單的方式是透過 pip
安裝:
1 | pip install Flask |
Flask 就會安裝到目前的 Python 環境中,適用於不使用虛擬環境管理器或是使用 venv
的情境。如果使用 Poetry 進行版本控制,則使用
1 | poetry add Flask |
建立第一個 Flask
首先在編譯器打開 app 的專案目錄,建立 app.py
這個檔案,例如:
1 | my_flask_app/ |
接著在主程式寫入以下內容:
1 | from flask import Flask # 載入 Flask |
執行程式後,進入 http://127.0.0.1:5000/
即可看到如下畫面,代表網站伺服器成功啟動。

圖 1:Flask 網頁範例
按下 Ctrl/⌃ + C
即可退出網站,此時再進入 http://127.0.0.1:5000/
便不會看到任何東西。
網址
一個網址的組成可以表達為
1 | 通訊協定://主機名稱:埠號/路徑?查詢字串 |
以這個網址為例:
1 | https://example.com:5000/api/user?id=123 |
可以分成以下幾個部分:
部分 | 名稱 | 說明 |
---|---|---|
https:// |
通訊協定 (protocol) | 告訴瀏覽器或程式要使用哪種協定進行資料傳輸,常見的是 http 或 https (安全的 http)。 |
example.com |
主機名稱 (hostname) | 網站的域名,對應到一個伺服器 IP,例如你可以在 DNS 中設定自己的主機名稱。 |
:5000 |
埠號 (port) | 是伺服器上正在監聽的門口。如果省略,http 預設用 80 ,https 用 443 ;Flask 開發模式常用 5000 。 |
/api/user |
路徑 (path) | 表示你要請求主機上的哪個資源,Flask 會用這個部分來決定執行哪個路由函式。 |
?id=123 |
查詢字串 (query string) | 傳遞給伺服器的額外資料,通常用在 GET 請求中,格式是 key=value 。 |
通訊協定
根據全球知名的網路服務公司 Cloudflare 給的定義:
在網路中,通訊協定是一組用於格式化和處理資料的規則。網路通訊協定就像電腦的通用語言。網路中的電腦可能會使用完全不同的軟體和硬體;然而,使用通訊協定使它們無論如何都能彼此通訊。
簡單來說,通訊協定就像是傳輸資料的語言規則,告訴瀏覽器如何與伺服器進行對話。
協定名稱 | 全名 | 用途 | 特點 | 常見應用 |
---|---|---|---|---|
TCP | Transmission Control Protocol | 傳輸層協定 | 確保資料可靠傳輸,與 IP 搭配使用(TCP/IP) | 網頁、郵件、檔案傳輸 |
HTTP | HyperText Transfer Protocol | 應用層協定 | 無狀態、用於傳輸網頁資料 | 網站連線、API 呼叫 |
HTTPS | HTTP Secure | 加密版 HTTP | 資料傳輸經 TLS/SSL 加密,更安全 | 登入、付款、個資傳輸 |
TLS/SSL | Transport Layer Security / Secure Sockets Layer | 加密協定 | 用於加密應用層協定如 HTTP、SMTP 等 | 安全通訊、網站 HTTPS |
UDP | User Datagram Protocol | 傳輸層協定 | 無連線、不保證可靠、但速度快 | 串流影音、線上遊戲 |
Flask 開發模式預設就是用 http
,但部署時可以透過反向代理(如 nginx)加上 SSL 轉為 https
。
主機名稱
也就是想要連到的伺服器名稱,對應到一個 IP 位址。
IP 位址是指派給連接至網際網路之裝置或網域的唯一識別碼。每個 IP 位址都是一系列字元,例如
192.168.1.1
。
圖 2:主機互動圖示[1]
如果在本機測試,常見的主機名稱會是:
localhost
127.0.0.1
主機名稱 | 用途 |
---|---|
localhost |
本機測試 Flask |
example.com |
公開網站 |
myapp.local |
開發用模擬主機,需設 DNS 或 hosts 檔 |
可以這樣啟動伺服器讓它在特定主機名稱上提供服務:
1 | flask run --host=127.0.0.1 |
連線埠與埠號
一台電腦或一個伺服器上可以同時跑很多服務(例如 HTTP、FTP、郵件),每個服務就像是一個房間,而埠號就是這些房間的房號。
- 連線埠 (port):伺服器上開的一個特定門口,專門用來收某一類的資料。
- 埠號 (port number):門口的編號。
服務類型 | 協定 | 預設埠號 |
---|---|---|
HTTP(網頁) | TCP | 80 |
HTTPS(加密網頁) | TCP | 443 |
SSH(遠端連線) | TCP | 22 |
MySQL(資料庫) | TCP | 3306 |
Flask(開發伺服器) | TCP | 5000 (預設) |
在 Flask 的 app 中可以改變埠號。只要在 app.run()
中,指定 port=埠號
即可改變既有埠號。
1 | from flask import Flask |
另一個方法是不在程式碼中指定,而是在執行時指定:
1 | flask run -p 8080 |