【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
留言分享你的想法!
avatar-img
梧笙 WuSheng 的沙龍
65會員
2內容數
梧笙,取意吾生,在網路世界留下我的痕跡。
你可能也想看
Thumbnail
暖家的防潮、除濕用品分享,若你知道有什麼CP值更高的用品,請推薦給我!同時也分享蝦皮分潤計畫的好處。
Thumbnail
暖家的防潮、除濕用品分享,若你知道有什麼CP值更高的用品,請推薦給我!同時也分享蝦皮分潤計畫的好處。
Thumbnail
寒流來襲,你準備好禦寒小物了嗎?小吉推薦實際使用過、愛用且會回購的防寒小物,強調兼具美感與實用的選品原則。居家必備的地毯、手腳保暖小物(貓咪襪子、防水鋪棉手套、絨毛室內拖鞋)、電力保暖用品(電動暖暖包、可定時電熱毯),泡腳桶、浴室電暖器。特別整理蝦皮雙 12 活動攻略,並邀請你透過連結購買加入分潤。
Thumbnail
寒流來襲,你準備好禦寒小物了嗎?小吉推薦實際使用過、愛用且會回購的防寒小物,強調兼具美感與實用的選品原則。居家必備的地毯、手腳保暖小物(貓咪襪子、防水鋪棉手套、絨毛室內拖鞋)、電力保暖用品(電動暖暖包、可定時電熱毯),泡腳桶、浴室電暖器。特別整理蝦皮雙 12 活動攻略,並邀請你透過連結購買加入分潤。
Thumbnail
生完寶寶後 我真的深刻感受到一句話: 「睡不好,皮膚就先離家出走」 常常半夜起來哄寶寶、睡眠不規律 膚況也跟著黯淡、失去彈性>< 身為剛生完孩子的新手媽媽,我現在最在意的兩件事就是: 皮膚要彈潤、睡眠要穩定!! 這陣子我開始嘗試日夜搭配的膠原蛋白: 🌞 TIMESEAL 日間款
Thumbnail
生完寶寶後 我真的深刻感受到一句話: 「睡不好,皮膚就先離家出走」 常常半夜起來哄寶寶、睡眠不規律 膚況也跟著黯淡、失去彈性>< 身為剛生完孩子的新手媽媽,我現在最在意的兩件事就是: 皮膚要彈潤、睡眠要穩定!! 這陣子我開始嘗試日夜搭配的膠原蛋白: 🌞 TIMESEAL 日間款
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這
Thumbnail
當我們在開發一個AI應用服務時, 常常會需要載入大模型, But… 我們總不可能每一次的請求就載入一次模型吧! 這樣太沒有效率了, 也非常的浪費資源, 因此我們通常會希望應用程式啟動時就能夠載入模型, 之後每一次的請求只要讓模型進行運算即可, 那麼在FastAPI的框架中究竟要如何使用呢? 首
Thumbnail
當我們在開發一個AI應用服務時, 常常會需要載入大模型, But… 我們總不可能每一次的請求就載入一次模型吧! 這樣太沒有效率了, 也非常的浪費資源, 因此我們通常會希望應用程式啟動時就能夠載入模型, 之後每一次的請求只要讓模型進行運算即可, 那麼在FastAPI的框架中究竟要如何使用呢? 首
Thumbnail
關於FastAPI這個框架為什麼有什麼樣的優勢, 為什麼會這麼熱門? 歡迎參考「【Python 技術選型】如何選出適合的API框架呢?」。 站在巨人的肩膀上 FastAPI主要基於以下兩個重要的元件組成, Starlette與Pydantic, 就讓我們來看看兩者的關係吧! 安裝 pip
Thumbnail
關於FastAPI這個框架為什麼有什麼樣的優勢, 為什麼會這麼熱門? 歡迎參考「【Python 技術選型】如何選出適合的API框架呢?」。 站在巨人的肩膀上 FastAPI主要基於以下兩個重要的元件組成, Starlette與Pydantic, 就讓我們來看看兩者的關係吧! 安裝 pip
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News