1. Обзор
Swagger — это набор спецификаций для документирования и описания REST API. Он также предоставляет примеры значений для параметров конечной точки.
В этом руководстве мы покажем, как создать пример значения по умолчанию для массивов строк
, поскольку это поведение не включено по умолчанию.
2. Укажите массив строк в качестве параметров тела в Swagger
Проблема возникает, когда мы хотим указать массив строк в качестве параметров тела в Swagger.
Значение примера Swagger по умолчанию немного непрозрачно, как мы можем видеть в редакторе Swagger :
Итак, здесь мы видим, что Swagger на самом деле не показывает пример того, как должно выглядеть содержимое массива. Давайте посмотрим, как добавить один.
3. ЯМЛ
Во-первых, мы начнем с указания массива строк в Swagger, используя нотацию YAML. В разделе схемы мы включаем тип: массив
с элементами String
.
Чтобы лучше задокументировать API и проинструктировать пользователя, мы можем использовать метку примера
того, как вставлять значения:
parameters:
- in: body
description: ""
required: true
name: name
schema:
type: array
items:
type: string
example: ["str1", "str2", "str3"]
Посмотрим, насколько наш дисплей стал более информативным:
4. Спрингфокс
Или мы можем добиться того же результата, используя Springfox .
Нам нужно использовать dataType
и пример
в модели данных с аннотациями @ApiModel
и @ApiModelProperty
:
@ApiModel
public class Foo {
private long id;
@ApiModelProperty(name = "name", dataType = "List", example = "[\"str1\", \"str2\", \"str3\"]")
private List<String> name;
После этого нам также нужно аннотировать контроллер
, чтобы Swagger указывал на модель данных.
Итак, давайте использовать для этого @ApiImplicitParams
:
@RequestMapping(method = RequestMethod.POST, value = "/foos")
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
@ApiImplicitParams({ @ApiImplicitParam(name = "foo",
value = "List of strings", paramType = "body", dataType = "Foo") })
public Foo create(@RequestBody final Foo foo) {
Вот и все!
5. Вывод
При документировании REST API у нас могут быть параметры, представляющие собой строковые массивы. В идеале мы должны задокументировать их с помощью примеров значений.
Мы можем сделать это в Swagger с помощью свойства example .
Или мы можем использовать пример
атрибута аннотации в Springfox.
Как всегда, код доступен на GitHub .