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")
Ура, Йоханнес