Swagger на Scala, тип uuid и long не определены
Я пытаюсь реализовать чванство на моих маршрутах с akka-http
10.0.0 и swagger-akka-http
0.8.2. Это работает хорошо, но параметр запроса с типом: UUID и Long считаются неопределенными.
Должен ли я использовать формат?
Как это использовать?
Вот один из моих маршрутов:
@GET @Path("/{publisher_id}/{app_id}")
@ApiOperation(
value = "get a app Installation stat for an app ID",
notes = "Returns a session based on ID",
httpMethod = "GET"
)
@ApiImplicitParams(Array(
new ApiImplicitParam(name = "app_id", value = "ID of app that needs to be fetched, format com.totot.plop ", required = true, dataType = "string", paramType = "path"),
new ApiImplicitParam(name = "publisher_id", value = "publisher id : publisher_id ", required = true, dataType = "UUID?", paramType = "path"),
new ApiImplicitParam(name = "date_start", value = "Timestamp start date ", required = true, dataType = "LONG???" , paramType = "query"),
new ApiImplicitParam(name = "date_end", value = "Timestamp end date", required = true, dataType = "LONG???", paramType = "query"),
new ApiImplicitParam(name = "access_token", value = "session token of the user ", required = true, dataType = "UUID????", paramType = "query")
))
@ApiResponses(Array(
new ApiResponse(code = 404, message = "App not found"),
new ApiResponse(code = 400, message = "Invalid ID supplied"),
new ApiResponse(code = 401, message = "access token invalid")
))
2 ответа
Прежде всего, вы можете указать класс, как сказано в документе:
DataType может быть либо примитивом, либо именем класса.
Под именем класса это означает, что вы должны включить полное имя класса, которое является "java.util.UUID" или {UUID.class}, как упомянуто в документе.
Долго @ApiImplicitParam(... dataType="long" ...)
, Swagger JSON, который генерируется для параметра:
{
"name" : "name",
"in" : "query",
"description" : "param desc",
"required" : true/false,
"type" : "int",
"format" : "int64"
}
https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5.X имеет такой пример param.
Для параметров типа java.util.UUID нет специальной обработки в коде swagger.io для известных мне UUID. Поэтому я бы порекомендовал dataType="string". Как общий указатель, @ApiImplicitParam
dataType документируется как:
/**
* The data type of the parameter.
* <p>
* This can be the class name or a primitive.
*/
Примитивные значения кажутся именами примитивных типов java, например, int, long и т. Д. string
также поддерживается.