Swagger Модель типов данных в ImplicitParam с Play Framework

Я пытаюсь использовать Swagger для документирования моего REST API. Следуя этому примеру, я комментирую конечные точки REST следующим образом:

case class CreateItemRequest(title: String, body: String)

@ApiOperation(value = "Create a new item", httpMethod = "POST", response = classOf[Item])
@ApiImplicitParams(Array(new ApiImplicitParam(dataType = "CreateItemRequest", paramType = "body", name = "body", required = true, allowMultiple = false, value = "The item object to create")))
def create(
          @ApiParam(value = "Hash of the user", required = true)
          @QueryParam("userhash") userhash: String
          ) 

И я ожидал получить "Модель", как этот но я получаю только строку "CreateItemRequest" в качестве типа данных. Не в свойствах класса дела CreateItemRequest.

Привет, Даниэль

3 ответа

Вы должны использовать полное пространство имен в атрибуте dataType. Например:@ApiImplicitParam(dataType = "org.test.CreateItemRequest")

Попробуйте использовать эту аннотацию @JsonAutoDetect а также @JsonIgnoreProperties(ignoreUnknown = true) перед вашим классом, а затем добавить @JsonPropety для каждого свойства, которое вы хотите показать.

Убедитесь, что в своем определении маршрута вы называете свой метод следующим образом:

GET  url   controllers.foo.YourMethod(param: type)

Больше примера здесь.

Надеюсь, что это поможет вам.

Попробуйте также добавить аннотации к своим моделям, как показано здесь:

https://github.com/swagger-api/swagger-core/blob/master/samples/scala-play2/app/models/Pet.scala

Ваша аннотация ApiModel(name="CreateItemRequest") соответствует аннотации @ApiImplicitParam(dataType = "CreateItemRequest")

Ура, Йоханнес

Другие вопросы по тегам