Swagger-Akka-Http: список объектов в теле запроса
Я использую swagger-akka-http для создания документов Swagger для моего сервиса Akka HTTP.
Мой сервис имеет метод POST, принимающий List
из Characteristic
,
@ApiOperation(value = "Fetch offerings by characteristics", httpMethod = "POST")
@ApiImplicitParams(Array(
new ApiImplicitParam(name = "characteristics", required = true,
dataTypeClass = classOf[List[Characteristic]], paramType = "body")
))
@ApiResponses(Array(
new ApiResponse(code = 200, response = classOf[Offering], responseContainer = "List")
))
def fetchOfferings: Route = post {
entity(as[List[Characteristic]]) { characteristics =>
// some logic
}
}
dataTypeClass = classOf[List[Characteristic]]
в ApiImplicitParams
не работает, как ожидалось. В генерируемом Swagger YAML есть следующий результат:
parameters:
- in: "body"
name: "body"
description: "Characteristics"
required: true
schema:
type: "array"
items:
type: "object"
Как я могу оформить коллекцию объектов в теле запроса?
1 ответ
Вы можете сделать это так, чтобы принять список объектов в запросе на публикацию.
@ApiModel(value = "Request object")
case class Request(
@(ApiModelProperty@field)(
value = "Name",
name = "name",
required = true,
dataType = "string",
example = "DE",
allowEmptyValue = false)
name: String,
@(ApiModelProperty@field)(
value = "Marks",
name = "marks",
required = true,
dataType = "List[integer]",
example = "[10]",
allowEmptyValue = false)
marks: List[Int])
На вашем почтовом маршруте вы можете сделать что-то вроде этого.
@Path("/student")
@ApiOperation(
value = "Returns student information POST request",
nickname = "getStudentDetails",
httpMethod = "POST",
responseContainer = "List",
code = 200,
response = classOf[StudentDetails])
@ApiImplicitParams(Array(
new ApiImplicitParam(
name = "body",
required = true,
dataType = "Request",
paramType = "body")
))