列舉 (Enums)
您可以使用 enum
關鍵字來指定請求參數或模型屬性的可能值。例如,
1GET /items?sort=[asc|desc]
中的 sort 參數可以描述為
1paths:2 /items:3 get:4 parameters:5 - in: query6 name: sort7 description: Sort order8 type: string9 enum: [asc, desc]
在 YAML 中,您也可以每一行指定一個列舉值
1enum:2 - asc3 - desc
列舉中的所有值都必須符合指定的類型。如果您需要為列舉項目指定描述,可以在參數或屬性的 description
中執行此操作
1type: string2enum:3 - asc4 - desc5description: >6 Sort order:7 * asc - Ascending, from A to Z.8 * desc - Descending, from Z to A.
可重複使用的列舉
OpenAPI 3.0 支援可重複使用的列舉定義。
雖然 Swagger 2.0 沒有內建支援可重複使用的列舉,但可以使用 YAML 錨點在 YAML 中定義它們,前提是您的工具支援它們。錨點是 YAML 的一個便利功能,您可以使用 &anchor-name
標記一個鍵,然後在下方使用 *anchor-name
來參照該鍵的值。這讓您可以輕鬆地在 YAML 檔案中複製內容。
注意: 錨點 (&
) 必須在使用前定義。
1definitions:2 Colors:3 type: string4 enum: &COLORS5 - black6 - white7 - red8 - green9 - blue10 # OR:11 # enum: &COLORS [black, white, red, green, blue]12
13paths:14 /products:15 get:16 parameters:17 - in: query18 name: color19 required: true20 type: string21 enum: *COLORS22 responses:23 200:24 description: OK
如果您的工具的 YAML 剖析器支援 YAML 合併鍵 (<<
),您可以使用此技巧來參照類型和列舉值。
1definitions:2 Colors: &COLORS3 type: string4 enum: [black, white, red, green, blue]5paths:6 /products:7 get:8 parameters:9 - in: query10 name: color11 required: true12 <<: *COLORS13 responses:14 200:15 description: OK