vocus logo

方格子 vocus

【FastAPI 學習筆記 EP.1】簡介與環境建置

更新 發佈閱讀 6 分鐘

這篇文章將教你如何在電腦上建置 Python 的 Web 框架:FastAPI,你將學會建立隔離的開發環境、安裝必要套件,並寫出你的第一支 API 程式。

什麼是 FastAPI?

FastAPI 是一個用於建構 Web API 的 Python 框架 (Framework),以執行速度快和開發效率高為特點。想像它是一個餐廳服務生,當你點餐(Request)時,他會立刻幫你核對餐點,一旦確認單子沒填錯(自動檢查資料),他就會用最快的速度把餐點端上桌(Response)。

FastAPI 基礎環境建置

1. 虛擬環境 (Virtual Environment)

虛擬環境是專屬於這個專案的獨立空間,能避免不同專案間的套件版本發生衝突。

# Windows
python -m venv venv
# 啟動虛擬環境
.\venv\Scripts\activate

# macOS / Linux
python3 -m venv venv
# 啟動虛擬環境
source venv/bin/activate

執行後,你的終端機 (Terminal) 前面會出現 (venv) 字樣,代表目前正處於隔離環境中。

2. 套件安裝 (Installation)

FastAPI 需要兩個核心元件:框架本身以及執行它的伺服器 Uvicorn。我們使用官方推薦的 standard 選項一次安裝到位。

pip install "fastapi[standard]"

這行指令會同時安裝 FastAPI 框架和 Uvicorn 網頁伺服器,確保你的環境具備執行 Web 服務所需的所有依賴。

3. 應用程式實例 (App Instance)

這是 FastAPI 的核心物件,所有的路由 (Route) 和設定都必須掛載在這個物件上。

from fastapi import FastAPI

# 建立一個 FastAPI 應用程式實例
app = FastAPI()

app 變數就是你的網站主體,後續所有的功能(如網頁路徑)都是透過這個變數來定義。

FastAPI 實作範例

接下來,我們將撰寫一個簡單的 API,當使用者訪問首頁時,回傳一段 JSON 資料。

請在專案資料夾中建立一個名為 main.py 的檔案,並貼上以下程式碼:

from fastapi import FastAPI

# 1. 建立 app 實例
app = FastAPI()

# 2. 定義路由 (Route)
# @app.get("/") 當使用者用 GET 方法訪問根目錄 "/" 時,執行下方的函式
@app.get("/")
def read_root():
# 3. 回傳資料
# FastAPI 會自動將這個字典 (Dictionary) 轉換成 JSON 格式回傳
return {"message": "Hello World", "status": "success"}

在終端機輸入以下指令啟動開發伺服器:

fastapi dev main.py

這個範例會啟動了一個 Web 服務,當你在瀏覽器輸入 http://127.0.0.1:8000/ 時,程式會觸發 read_root 函式,並在網頁上顯示 {"message": "Hello World", "status": "success"}fastapi dev 指令會啟動開發模式,當你修改程式碼並存檔時,伺服器會自動重新啟動,提升開發效率。

常見錯誤與解決方法

1. 檔名或實例名稱錯誤

執行指令時,系統找不到指定的應用程式入口。

# 錯誤:如果你的檔案叫 main.py,但在程式碼內變數叫 app
# 錯誤指令
uvicorn main:server --reload

# 正確:指令格式為 [檔名]:[實例變數名]
uvicorn main:app --reload
# 或者使用新版簡化指令
fastapi dev main.py

2. 忘了啟動虛擬環境

直接安裝套件到全域環境,導致不同專案互相干擾或找不到套件。

# 錯誤:終端機開頭沒有 (venv) 就直接執行 pip install
pip install fastapi

# 正確:先確認有啟動虛擬環境
# Windows: .\venv\Scripts\activate
# Mac/Linux: source venv/bin/activate
pip install "fastapi[standard]"

3. 404 Not Found 錯誤

訪問了未定義的網址路徑 (Path)。

# 你的程式碼只有定義根目錄 "/"
@app.get("/")
def root():
return {"msg": "hi"}

# 錯誤:瀏覽器訪問 http://127.0.0.1:8000/users
# 結果:{"detail": "Not Found"}

# 正確:確保瀏覽器網址與 @app.get("...") 內的字串完全一致
# 訪問 http://127.0.0.1:8000/

結語

你已經成功建置了開發環境,並執行了第一個 FastAPI 專案,這證明你已經知道虛擬環境的重要性、學會 uvicorn 啟動指令,以及路由(Routing)的基本定義。

留言
avatar-img
梧笙 WuSheng 的沙龍
65會員
14內容數
⛰️ 梧笙,意即「吾生」,我是一個平凡的理工宅男。 生活離不開 Code 與 Game,這裡主要紀錄與分享: 📖 學習筆記|紀錄我學習過的電腦技能與知識。 💻 科技新知|整理實用工具與科技領域的資訊。 🎮 電玩娛樂|聊聊遊戲動漫與實況直播的話題。 目前更新頻率不固定,有興趣歡迎追蹤。
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
我們在「【🔒 Python API框架篇 - FastAPI】Ep.1 啟航」稍微帶大家認識了FastAPI這個框架, 它讓我們快速的架設一個API服務, 並提供了許多標準化功能, 只要照著規範走就能快速的開發出來, 但開發出來之後, 我們會希望開放給一般使用者使用, 而一般使用者較能夠操作的媒介
Thumbnail
我們在「【🔒 Python API框架篇 - FastAPI】Ep.1 啟航」稍微帶大家認識了FastAPI這個框架, 它讓我們快速的架設一個API服務, 並提供了許多標準化功能, 只要照著規範走就能快速的開發出來, 但開發出來之後, 我們會希望開放給一般使用者使用, 而一般使用者較能夠操作的媒介
Thumbnail
我們在「【🔒 Python API框架篇 - FastAPI】Ep.1 啟航」稍微帶大家認識了FastAPI這個框架, 它讓我們快速的架設一個API服務, 並提供了許多標準化功能, 只要照著規範走就能快速的開發出來, 但我們除了能開發出應用之外, 也要設計的更人性化一點, API最重要的就是路由了
Thumbnail
我們在「【🔒 Python API框架篇 - FastAPI】Ep.1 啟航」稍微帶大家認識了FastAPI這個框架, 它讓我們快速的架設一個API服務, 並提供了許多標準化功能, 只要照著規範走就能快速的開發出來, 但我們除了能開發出應用之外, 也要設計的更人性化一點, API最重要的就是路由了
Thumbnail
API是我們與其他系統介接的標準化規格, 那一份好的規格勢必要能夠達到引導與驗證的作用, 避免對方介接錯誤, 引發後續的災難性損失, 因此這一章節就是要教我們如何定義每個API的欄位怎麼填? 資料型態是什麼? 以及如何生成API文件。 我們在「【🔒 Python API框架篇 - Fas
Thumbnail
API是我們與其他系統介接的標準化規格, 那一份好的規格勢必要能夠達到引導與驗證的作用, 避免對方介接錯誤, 引發後續的災難性損失, 因此這一章節就是要教我們如何定義每個API的欄位怎麼填? 資料型態是什麼? 以及如何生成API文件。 我們在「【🔒 Python API框架篇 - Fas
Thumbnail
要如何使用unicorn啟動多個FastAPI服務, 歡迎參考我們的「【💊 Python的解憂錦囊 - FastAPI】如何啟動多個Workers」。 當我們試著設計帶入模組化時… 我們在「【💊 Python的解憂錦囊 - FastAPI】使用 lifespan 來共享資料與管理生命週期
Thumbnail
要如何使用unicorn啟動多個FastAPI服務, 歡迎參考我們的「【💊 Python的解憂錦囊 - FastAPI】如何啟動多個Workers」。 當我們試著設計帶入模組化時… 我們在「【💊 Python的解憂錦囊 - FastAPI】使用 lifespan 來共享資料與管理生命週期
Thumbnail
我們在「【🔒 Python API框架篇 - FastAPI】Ep.1 啟航」有說明如何使用uvicorn來啟動FastAPI服務, 假設今天我們的API是一個CPU密集型的運算服務時, 通常我們會希望開啟多個行程來幫忙處理, 那麼大致上的撰寫方式會像這樣: app = FastAPI( ti
Thumbnail
我們在「【🔒 Python API框架篇 - FastAPI】Ep.1 啟航」有說明如何使用uvicorn來啟動FastAPI服務, 假設今天我們的API是一個CPU密集型的運算服務時, 通常我們會希望開啟多個行程來幫忙處理, 那麼大致上的撰寫方式會像這樣: app = FastAPI( ti
Thumbnail
我們在「【🔒 Python API框架篇 - FastAPI】Ep.1 啟航」有分享 FastAPI 這套API框架, 那麼當我們想要在應用程式剛執行時就註冊一些事件或者共享GPU運算模型、變數…等,當整個應用程式關閉時也進行釋放作業, 這樣的一個週期循環就是所謂的生命週期, 而在FastAPI這
Thumbnail
我們在「【🔒 Python API框架篇 - FastAPI】Ep.1 啟航」有分享 FastAPI 這套API框架, 那麼當我們想要在應用程式剛執行時就註冊一些事件或者共享GPU運算模型、變數…等,當整個應用程式關閉時也進行釋放作業, 這樣的一個週期循環就是所謂的生命週期, 而在FastAPI這
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News