使用 Swagger 定義字符串數組作為請求體參數

REST,Spring Boot
Remote
1
08:28 AM · Dec 01 ,2025

1. 概述

Swagger 是一套規範,用於文檔化和描述 REST API。它還提供端點參數的示例值。

在本教程中,我們將演示如何生成默認示例值,用於 String 數組,因為此行為默認未啓用。

2. 指定字符串數組作為Body參數在Swagger中

問題在於,當我們希望在Swagger中指定字符串數組作為Body參數時。

Swagger的默認示例值有點不透明,如你所見在 Swagger編輯器 中:

swagger description array without example 1

因此,我們看到Swagger並沒有真正展示數組內容應該是什麼樣子。讓我們看看如何添加一個。

3. YAML

首先,我們使用 YAML 記法在 Swagger 中指定字符串數組。在 schema 部分,我們包含 並且

為了更好地記錄 API 並指導用户,我們可以使用 標籤來演示如何插入值:

parameters:
  - in: body
    description: ""
    required: true
    name: name
    schema:
      type: array
      items:
        type: string
      example: ["str1", "str2", "str3"]

讓我們看看我們的顯示現在更加信息豐富:

swagger description array 1

4. Springdoc

或者,我們可以使用 Springdoc 達到相同的效果。

我們需要在數據模型中使用 type: arrayexample 以及 @Schema 註解:

@Schema
public class Foo {
    private long id;
    @Schema(name = "name", type = "array", example = "[\"str1\", \"str2\", \"str3\"]")
    private List<String> name;
}

之後,還需要對 Controller 進行註解,以便 Swagger 指向數據模型。

因此,我們使用 @Parameters 來實現:

@RequestMapping(method = RequestMethod.POST, value = "/foos")
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
@Parameters({ @Parameter(name = "foo", description = "字符串列表") })
public Foo create(@RequestBody final Foo foo) {
}

這就是全部了!

5. 結論

在REST API 文檔中,我們可能會遇到字符串數組作為參數。理想情況下,我們應該使用示例值進行文檔記錄。

我們可以使用 Swagger 中的example 屬性來實現。或者,我們可以在 Springdoc 中使用example 註解屬性。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.