Я пытался добавить примеры к своему Swagger API в соответствии с официальным документом (см. Последний кодовый блок Примеры тела запросов и ответов ), но, похоже, он не работаеткак и ожидалось.
Учитывая следующий минимальный пример:
swagger: "2.0"
info:
description: Desc
version: "1"
title: Title
paths:
/stuff:
post:
produces:
- application/json
responses:
201:
description: It worked
content:
application/json:
schema:
$ref: "#/definitions/StatusMessage"
examples:
Success without message:
value:
code: "00000"
Success with message:
value:
code: "00000"
message: "All right"
definitions:
StatusMessage:
type: object
description: Response with code and optional message
properties:
code:
type: string
message:
type: string
required:
- code
Я хочу предоставить примеры ответов, один с необязательным свойством message
присутствует, а другой - без.Однако вышеупомянутый файл YAML дает неправильные результаты в сгенерированном классе API:
@ApiOperation(value = "", nickname = "stuffPost", notes = "", tags={ })
@ApiResponses(value = {
@ApiResponse(code = 201, message = "It worked") })
@RequestMapping(value = "/stuff",
method = RequestMethod.POST)
default ResponseEntity<Void> stuffPost() { /*default implementation*/ }
Свойство produces
отсутствует, а тип возвращаемого значения неправильный!Кроме того, это не компилируется в Swagger Editor : свойство responses
should NOT have additional properties
.
Я изменил его, чтобы получить «действительный» пример в SwaggerРедактор, но сгенерированный код также неверен.См. Ниже:
paths:
/stuff:
post:
produces:
- application/json
responses:
201:
description: It worked
schema:
$ref: "#/definitions/StatusMessage"
examples:
Success without message:
code: "00000"
Success with message:
code: "00000"
message: "All right"
Сгенерированный метод:
@ApiOperation(value = "", nickname = "stuffPost", notes = "", response = StatusMessage.class, tags={ })
@ApiResponses(value = {
@ApiResponse(code = 201, message = "It worked", response = StatusMessage.class) })
@RequestMapping(value = "/stuff",
produces = { "application/json", "Success without message", "Success with message" },
method = RequestMethod.POST)
default ResponseEntity<StatusMessage> stuffPost() { /*default implementation*/ }
На этот раз свойство produces
есть, но полностью отключено!
Как мне заставить это работать? Это работает, если я использую вторую версию с application/json
в качестве ключа для заголовка примера, но это мешает мне добавлять больше примеров из-за дублированного ключа.