Skip to content
ADP
API Design PrincipleBETA

[ADP-367] HTTP Profile

概述

RFC 6906 引入了 "profile" 鏈接關係類型,允許 API 設計者傳達超出媒體類型本身描述的額外語義。

指導

  • 具有 audience≥PARTNER_EXTERNAL 的 API 應該(SHOULD)使用 "profile" 鏈接關係來表示資源表示符合一個或多個配置文件。

  • 配置文件應該(SHOULD)被清楚定義和記錄。文件應包括:

    • 配置文件的唯一標識符(URI)。
    • 對配置文件施加的額外語義、約束和慣例的描述。
  • 在適用的情況下,應(SHOULD)在 HTTP 標頭中包含 "profile" 鏈接關係以傳達配置文件資訊。例如:

    http
    Link: <http://example.com/profiles/resource-profile>; rel="profile"
  • 配置文件鏈接應該(SHOULD)是絕對 URI 而不是相對 URI。 URI 必須位於與 API 端點相同的 URL 命名空間內。例如,如果所有 API 端點都位於 https://api.test.com/v1/,則配置文件 URI 也應位於相同的上下文路徑中(例如,https://api.test.com/v1/payment/profiles/payment-method+v1)。

  • 如果決定要支援 REST 成熟度層級 3, "profile" 鏈接關係應(SHOULD)嵌入超媒體格式(例如,JSON、HAL)中,以表示特定資源符合配置文件。例如:

    json
    {
      "name": "範例資源",
      "description": "這是一個範例資源。",
      "_links": {
        "profile": {
          "href": "http://example.com/profiles/sample-resource"
        }
      }
    }
  • 配置文件應該(SHOULD)進行版本控制,以適應隨時間的變化和改進。配置文件 URI 在適用時應包含版本資訊。例如:

    http
    Link: <http://example.com/profiles/resource-profile/v1.0>; rel="profile"
  • 配置文件應該(SHOULD)設計為促進不同系統之間的互操作性。它們應該指定驗證規則,以確保資源表示符合配置文件。

  • 更新配置文件時,應(SHOULD)注意保持向後兼容性。應清楚記錄已棄用的元素,並應給予客戶端充足的時間過渡到新版本。

  • API 設計者應(SHOULD)考慮使用 OpenAPI schema 作為配置文件的基礎

  • 配置文件可(MAY)與內容協商結合使用,允許客戶端請求資源的特定表示。

  • API 文件應(SHOULD)清楚解釋如何解釋和使用配置文件,包括對客戶端行為的任何影響。

  • DRAFT 應(SHOULD)考慮創建一個配置文件註冊表,以管理和記錄所有可用的配置文件。

示例

OpenAPI 中的配置文件聲明

yaml
openapi: 3.0.0
info:
  title: 範例 API
  version: 1.0.0
paths:
  /resources:
    get:
      responses:
        '200':
          description: 成功回應
          headers:
            Link:
              schema:
                type: string
              example: '<http://example.com/profiles/resource/v1>; rel="profile"'

參考

設計參考