В настоящее время я использую openapi-generator для создания API-интерфейсов Spring Boot на основе спецификации yaml. Одна конечная точка в спецификации yaml должна возвращать карту, значения которой представляют собой списки значений перечисления.
Код: Выделить всё
{
"key1": ["EnumvVal1",...],
"Key2": ["EnumVal2", ...],
}
В настоящее время ответ в спецификации openapi определяется следующим образом:
Код: Выделить всё
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
additionalProperties:
type: array
items:
type: MyEnum
Тип MyEnum — это существующее (не сгенерированное) перечисление, определенное в моем коде, которое генератор настроен на использование через importMapping. Я ожидаю, что приведенная выше спецификация должна генерировать код/документацию, которая возвращает Map, но, похоже, я прав лишь наполовину.
Это это то, что на самом деле создает openapi-generator в классе API:
Код: Выделить всё
@Operation(
operationId = "myMethod",
summary = "...",
description = "....",
tags = { "My Tag" },
responses = {
@ApiResponse(responseCode = "200", description = "OK", content = {
@Content(mediaType = "application/json", schema = @Schema(implementation = MyEnum.class))
})
}
)
@RequestMapping(
method = RequestMethod.GET,
value = "/some/path",
produces = { "application/json" }
)
default ResponseEntity myMethod() { ... }
Фактический метод генерируется с правильным типом возвращаемого значения, как я и ожидал, но по какой-то причине аннотации openapi указывают возвращаемое значение как просто одно перечисление, в отличие от более сложного тип карты. Это приводит к тому, что сгенерированная документация Swagger оказывается неверной. Это проблема с моей спецификацией openapi или ошибка в генераторе?
В настоящее время я использую плагин openapi-generator maven версии 7.8.0 для генерации кода.
Подробнее здесь:
https://stackoverflow.com/questions/789 ... annotation