專注 API 管理、DevOps 整合、自動化測試與軟體品質工程的顧問服務
微服務架構 (Microservices) 的初衷是解耦 (Decoupling),讓每個服務可以獨立開發、獨立部署。這聽起來很棒,但在 API 設計上,這往往演變成一場災難。
試想一下,你們公司有「訂單服務」、「會員服務」和「物流服務」。這三個服務都需要用到 「使用者資料 (User Profile)」。 結果發生了什麼事?
Team A (訂單) 定義的 User 有 user_id 和 email。
Team B (會員) 定義的 User 有 uid 和 e-mail (多了一個連字號)。
Team C (物流) 定義的 User 有 id 和 contact_email。
雖然都在講同一個「人」,但欄位名稱完全不同。這導致前端團隊在串接時,必須寫三套不同的邏輯來解析資料。這不叫「獨立」,而是「疊床架屋」(Reinventing the wheel)且製造混亂。
今天我們要聊聊,如何利用 SmartBear Swagger (SwaggerHub) 的 Domains (領域) 功能,來終結這種各自為政的亂象。
在寫程式時,我們都知道要把共用的函式抽出來變成 Common Library 或 Module,讓大家去引用 (Import),而不是到處複製貼上程式碼。
API Domains 的概念一模一樣,只是它應用在 OpenAPI Spec 上。
透過 SmartBear Swagger (SwaggerHub),架構師可以建立一個獨立的 “Global Shared Domain” 專案,在裡面定義企業通用的資料模型與標準回應。例如:
Schema: User, Product, ErrorModel
Parameters: Pagination (分頁參數), AuthorizationHeader
Responses: 400 BadRequest, 500 ServerError
一旦建立了這個共用元件庫,各個微服務團隊在設計自己的 API 時,就不需要重新手寫 User 的定義了。
他們只需要在自己的 Swagger 檔中寫一行引用語法: $ref: 'https://api.swaggerhub.com/domains/my-company/shared-models/1.0.0#/definitions/User'
這就像是在堆樂高。中央廚房已經把標準的「樂高積木」做好了,開發者只需要把它們「組裝」起來,專注在該服務特有的商業邏輯即可。
全公司的 API 都使用同一個 ErrorModel。這意味著前端可以寫一套統一的錯誤處理機制 (Error Handling),不用擔心這個 API 回傳 error_msg,那個 API 回傳 message。
想像一下,如果法規改變,要求所有「金額」欄位必須精確到小數點後四位。
沒有 Domains:你要去檢查 50 個微服務的 Spec,手動修改 50 次。漏改一個就是 Bug。
有 Domains:你只要修改共用庫裡的那一個 Money 定義,所有引用它的 50 個 API 就會自動獲得更新(或收到更新通知)。
工程師不用再煩惱「分頁參數要怎麼命名?」,直接引用標準的分頁元件。省去了思考瑣碎細節的時間,開發速度自然變快。
微服務強調的是「鬆耦合 (Loose Coupling)」,但這不代表資料模型也要「鬆散」。
透過 SmartBear Swagger (SwaggerHub) 的 Domains 功能,我們可以在保持團隊獨立性的同時,在數據結構層面達成高度的統一。
記住,好的架構師不會讓工程師一直做重複的事。建立好你們的企業級元件庫,讓 API 開發從「手工業」進化為「模組化組裝」吧!
當我們的圖畫好了(API Spec),元件也標準化了(Domains),但這些設計圖如果只躺在 Hub 裡,是沒辦法變成真正的程式碼的。 下一次,我們要來探討 DevOps 整合。如何讓 Swagger (SwaggerHub) 上的一個「Save」動作,自動觸發 Git 的流程,甚至自動生成 SDK?讓我們打通 Design-First 與 GitOps 的任督二脈。
想要了解更多?趕快和我們聯絡!