API Design Principles:給 REST 和 GraphQL 接口定一套能落地的規範

前言

接口寫到第十個版本,團隊裏通常會出現這些情況:同一個資源一會兒叫 /api/createUser,一會兒叫 /api/users;創建成功返回 200,刪掉也返回 200;分頁有的用 page/page_size,有的用游標,前端每個模塊各寫一套解析;錯誤響應結構更是一人一個樣,前端只能寫 if-else 去猜。根因不是某個程序員不細心,是團隊缺少一份明確、可執行的 API 設計規範。

下面介紹 API Design Principles,一個按 REST 與 GraphQL 最佳實踐評審或設計 API 的 Skill。

這是什麼

API Design Principles 是 wpank 發佈在 ClawHub 上的 Skill,座標 @clawhub_wpank/api-design-principles,當前版本 1.0.0,分類 dev-programming,經 SkillHub 收錄。它解決的問題是:在設計新接口、評審已有接口規範、給團隊定標準這幾個場景裏,給出統一、可執行的設計約定。官方簡介是”設計清晰、可擴展的 REST 與 GraphQL API”,覆蓋資源建模、HTTP 方法、分頁、錯誤處理、版本控制與 Schema 最佳實踐。

該 Skill 不需要 API Key(requires_api_key=false),是純提示詞規範類的 Skill,不依賴外部工具鏈。

核心功能

按官方 SKILL.md,能力分四塊。

REST 設計

  • 資源命名:集合用複數名詞,不寫動詞;嵌套最多兩層
  • HTTP 方法與狀態碼:給出常用方法的語義表和完整狀態碼分類(成功、客戶端錯誤、服務端錯誤)
  • 分頁:偏移分頁與游標分頁兩種模式,附響應結構示例
  • 過濾、排序、搜索與字段選擇的查詢參數寫法
  • 統一的錯誤響應結構
  • 版本化策略:URL 版本與 Header 版本的取捨,以及棄用流程
  • 限流:響應頭約定與實現思路

GraphQL 設計

  • Schema 結構與命名約定
  • Relay 風格的分頁類型(Connection / Edge / PageInfo)
  • Input / Payload 模式的 Mutation
  • 用 DataLoader 解決 N+1 查詢
  • 查詢保護:深度限制、複雜度限制、超時

REST 與 GraphQL 的決策框架

官方給出一張對照表,按場景選擇範式:簡單 CRUD、公開 API、重緩存選 REST;複雜嵌套數據、客戶端精確取數、聚合多數據源選 GraphQL。

團隊規範輸出

Skill 的定位不是給單個接口挑毛病,而是產出可執行的設計規範,可作爲團隊評審的檢查清單。

安裝與啓用

官方倉庫給出的安裝命令如下:

openclaw skills install @wpank/api-design-principles

這是上游 ClawHub 倉庫頁面展示的 CLI 命令。安裝後按 SKILL.md 的 WHEN 場景觸發即可,即在需要設計或評審 API 時把 Skill 納入上下文,把接口需求或現有接口定義交給它處理。

典型用法

官方列出了五個適用場景,可直接作爲使用入口:

  1. 設計新的 REST 或 GraphQL API
  2. 實現前評審 API 規範
  3. 爲團隊制定 API 設計標準
  4. 爲提升可用性重構已有 API
  5. 在 API 範式之間遷移

評審類用法示例:把現有的 OpenAPI 文檔或接口清單交給 Skill,讓它按命名、狀態碼、分頁、錯誤格式逐項檢查。例如發現以下寫法時:

POST /api/createUser   ← 動詞出現在 URL 裏
POST /api/users        ← 正確寫法,方法本身就是動詞

以及這種過深的嵌套:

GET /api/users/{id}/orders/{orderId}/items/{itemId}/reviews  ← 太深
GET /api/order-items/{id}/reviews                            ← 更好

Skill 會按規則指出問題並給出改寫建議。設計類用法示例:說明業務需求後,讓 Skill 先出決策框架(REST 還是 GraphQL),再產出資源命名、端點清單、分頁方式和錯誤結構的完整約定,可直接沉澱爲團隊規範文檔。

適用場景與注意

適合這幾類人:後端與全棧開發者、API 平臺的接口負責人、需要給團隊立規範的技術管理者。

需要說明的限制:

  1. 它是評審與規範類 Skill,輸出的是設計約定和檢查清單,不替代 OpenAPI 代碼生成、網關配置這類工程工具。
  2. Skill 給出的分頁大小、查詢深度上限、複雜度上限、限流閾值都是示例值,上線前要按業務數據量和性能實測調整,不能直接照抄。
  3. 版本化棄用週期(官方建議 6 到 12 個月)是通用約定,具體時長要結合調用方遷移情況定。

結尾

API Design Principles 的價值不在於給出一份”正確但空泛”的規範列表,而是把命名、狀態碼、分頁、錯誤、版本化這些每個團隊都會撞上的問題,固化成可以直接照着做、可以拿去做評審的約定。官方地址:https://api.skillhub.cn/user_f4fc8899/api-design-principles,上游倉庫:https://clawhub.ai/wpank/api-design-principles。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜