Заставить Swagger раскрыть детали объекта запроса

Я создаю службу отдыха, используя загрузку Spring, а для документации я использую Swagger (через SpringFox). И работает почти нормально. Проблема возникает, когда я переместил все параметры моего запроса в объект запроса и использовал его в сигнатуре метода, таким образом, неявно привязывая значения и запуская неявно валидаторы Spring.

Вот как выглядит моя подпись метода:

public List<Category> getCategory( @Valid CategoryInputRequest inputRequest) throws JsonParseException,
  JsonMappingException, IOException

CategoryInputRequest — это bean-компонент, имеющий простую структуру bean-компонента:

@ApiModel(value = "Input Description")
public class CategoryInputRequest  {
   @NotNull(message="SE Number is mandatory")
   @Size(min=10,max=10,message="SE Number must have 10 characters")
   @ApiModelProperty
   private String idNumber;

   @NotNull(message="Platform ID is mandatory")
   @ApiModelProperty
   private String platformId;
   .
   .
   .

Где IdNumber, platformId — это параметры запроса, а проверка данных и привязка происходят безупречно. Но Swagger предполагает, что «CategoryInputRequest inputRequest» в сигнатуре метода является типом параметра requestBody, а не параметрами запроса, и, следовательно, не предоставляет пользователю отдельные поля. Вместо этого дает большую текстовую область для размещения блока JSON. Я пытался указать @APIModelProperty, но это не работает.

Кто-нибудь может помочь? Надеюсь, я смог объяснить проблему.


person Barun Mishra    schedule 15.11.2016    source источник


Ответы (1)


Отвечая на мой собственный вопрос:

открытый список getCategory( @Valid CategoryInputRequest inputRequest) работает, но правильное объявление должно иметь ключевую работу @ModelAttribute. Это указывает, что сопоставление выполняется из параметров запроса в URL-адресе, а не из тела запроса. А swagger умеет правильно анализировать паттерн. Надеюсь, это поможет кому-то :)

person Barun Mishra    schedule 15.11.2016