【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
我們在「【🔒 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
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News