Swagger Java ApiResponse Map - PullRequest
       12

Swagger Java ApiResponse Map

0 голосов
/ 06 июня 2019

Я пытаюсь получить примерное значение ответа в документах по интерфейсу Swagger для правильного отображения карты.Вот как выглядит моя карта: Map<Long, List<UserRole>>.У объекта UserRole просто есть два поля: roleId & roleName.

Согласно аннотациям Javadoc для Swagger, responseContainer поддерживает Valid values are "List", "Set" or "Map". Any other value will be ignored.

Однако это реализация внутри общей библиотеки SpringFox Swagger.:

  if ("List".compareToIgnoreCase(responseContainer) == 0) {
    return Optional.of(resolver.resolve(List.class, response));
  } else if ("Set".compareToIgnoreCase(responseContainer) == 0) {
    return Optional.of(resolver.resolve(Set.class, response));
  } else {
    return Optional.of(resolver.resolve(response));
  }

Очевидно, что это не поддерживает карту.

Если я не укажу тип ответа: @ApiResponse(code = 200, message = "OK"), то документы Swagger будут выглядеть так:

{
  "additionalProp1": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ],
  "additionalProp2": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ],
  "additionalProp3": [
    {
      "roleId": 1234,
      "roleName": "User"
    }
  ]
}

Это почти правильно, за исключением того, что мне нужно заменить поле additionalPropX длинным значением.Я попытался установить примеры несколькими различными способами: @ApiResponse(code = 200, message = "OK", examples = @Example(value = @ExampleProperty(value = "Puppy"))),.Я не думаю, что это реализовано в SpringFox.Я попытался создать новый POJO, чтобы обернуть мой ответ, но это просто вызывает некоторые действительно странные примеры ответов.

Я использую последние зависимости Swagger через Gradle:

compile 'io.springfox:springfox-swagger-ui:2.9.2'
compile 'io.springfox:springfox-swagger2:2.9.2'

Возможно ли это?

...