【FastAPI 學習筆記 EP.14】Swagger UI

更新 發佈閱讀 4 分鐘

什麼是 Swagger UI?

FastAPI 會提供 OpenAPI Schema,並內建互動式文件介面 Swagger UI,預設路徑為 /docs,可直接在瀏覽器測試 API。

Swagger UI 基礎應用

  1. 開啟文件頁面:啟動後預設可在 http://127.0.0.1:8000/docs 看到 Swagger UI,通常不需額外設定。
  2. 自訂文件資訊:在 FastAPI() 實例化時傳入 title、description、version 可修改文件標題與描述。
  3. 分組標籤:在路徑裝飾器加入 tags=["名稱"],可將 API 依功能分類顯示在文件中。
  4. API 端點描述:可用 summary 設定簡短標題,詳細說明可以寫在Python docstring。
  5. 資料模型展示:透過 Pydantic 定義 response_model,讓文件自動顯示輸入與輸出的 Schema 結構。
  6. 停用文件:若為正式環境安全考量,可設定 redoc_url=None、docs_url=None、openapi_url=None 關閉頁面。
from fastapi import FastAPI
from pydantic import BaseModel, Field

# 1. 實例化 App 並設定文件資訊
app = FastAPI(
    title="商品管理系統 API",       # 文件大標題
    description="Swagger UI 教學範例",  # 文件副標題與描述
    version="1.0.0",               # API 版本號
    # docs_url="/docs",               # 預設是 /docs
    # redoc_url="/redoc",             # 預設是 /redoc
    # openapi_url="/openapi.json",    # 預設是 /openapi.json
)

# 定義資料模型 (Schema)
class Item(BaseModel):
    name: str = Field(
        ...,
        examples=["無線滑鼠"],
    )

    price: int = Field(
        ...,
        gt=0,
        examples=[599],
    )

    in_stock: bool = Field(
        True,
    )

# 2. 建立 API 路由,加入文件描述參數
@app.post("/items/", tags=["商品管理"], summary="新增商品", response_model=Item)
def create_item(item: Item):
    """
    建立新商品的詳細說明:
    - **name**: 商品名稱
    - **price**: 商品價格 (必須大於 0)
    - **in_stock**: 預設為 True
    """
    print(f"收到商品: {item.name}")

    return item

@app.get("/items/{item_id}", tags=["商品管理"], summary="查詢商品")
def read_item(item_id: int):
    # 示範路徑參數的文件生成
    return {"item_id": item_id, "name": "測試商品"}
留言
avatar-img
梧笙 WuSheng 的沙龍
65會員
14內容數
⛰️ 梧笙,意即「吾生」,我是一個平凡的理工宅男。 生活離不開 Code 與 Game,這裡主要紀錄與分享: 📖 學習筆記|紀錄我學習過的電腦技能與知識。 💻 科技新知|整理實用工具與科技領域的資訊。 🎮 電玩娛樂|聊聊遊戲動漫與實況直播的話題。 目前更新頻率不固定,有興趣歡迎追蹤。
2026/01/06
回應模型 (Response Model) 是基於 Pydantic 定義的資料規格,用於限制、過濾及格式化 API 回傳給前端的資料。簡單來說,當後端從資料庫取出原始資料後,回應模型會自動過濾掉敏感或不需要的欄位(例如密碼),僅將符合規格的資料交給客戶端。
Thumbnail
2026/01/06
回應模型 (Response Model) 是基於 Pydantic 定義的資料規格,用於限制、過濾及格式化 API 回傳給前端的資料。簡單來說,當後端從資料庫取出原始資料後,回應模型會自動過濾掉敏感或不需要的欄位(例如密碼),僅將符合規格的資料交給客戶端。
Thumbnail
2025/12/31
在 FastAPI 開發中,ORM 模型是用來與資料庫進行互動的橋樑。簡單來說,它將Python 的類別 (Class)對應到資料庫的表格 (Table),並將類別的屬性對應到表格的欄位 (Column)。
Thumbnail
2025/12/31
在 FastAPI 開發中,ORM 模型是用來與資料庫進行互動的橋樑。簡單來說,它將Python 的類別 (Class)對應到資料庫的表格 (Table),並將類別的屬性對應到表格的欄位 (Column)。
Thumbnail
2025/12/30
在 FastAPI 的依賴注入中,yield 主要用於建立「帶有清理功能的依賴項」。簡單來說,使用 return 的依賴項只負責「創建」資源,而使用 yield 的依賴項則能同時處理「準備資源」與「清理資源」。
Thumbnail
2025/12/30
在 FastAPI 的依賴注入中,yield 主要用於建立「帶有清理功能的依賴項」。簡單來說,使用 return 的依賴項只負責「創建」資源,而使用 yield 的依賴項則能同時處理「準備資源」與「清理資源」。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
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的框架中究竟要如何使用呢? 首
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News