[ADP-704] ID 欄位慣例
指導原則
- 除非有令人信服的理由使用不同格式,否則應該(SHOULD)使用 UUID v4 作為 ID 值。
- 如果資源本質上是基於計數的,例如
/bugs/123
,可以(MAY)使用遞增數字。
- 如果資源本質上是基於計數的,例如
- 必須(MUST)確保 ID 值在其資源類型內是唯一的。
- 如果 ID 欄位可能存在歧義,可以(MAY)添加
${resourceType}
作為欄位名稱前綴。
設計理由
每個資源對象都必須有 id
欄位,當多個資源對象嵌套(作為子資源)時,可能導致歧義。使用資源類型作為前綴可以提高識別對象類型的清晰度。這種方法符合 API 設計中的清晰性和自描述原則。
示例
應該:
json
{
"userId": "123e4567-e89b-12d3-a456-426614174000",
"orderId": "98765432-10ab-cdef-1234-567890abcdef"
}
錯誤做法
json
{
"id": "123",
"order_id": 456
}
OpenAPI 規範
yaml
components:
schemas:
User:
type: object
properties:
userId:
type: string
format: uuid
description: 用戶的唯一標識符
Order:
type: object
properties:
orderId:
type: string
format: uuid
description: 訂單的唯一標識符