Как интегрировать Swagger с SpringDoc YAML?

Я использую Swagger для документирования своего проекта и хочу сгенерировать документ YAML из springdoc. Но когда я создаю эту документацию YAML, у YAML нет моих документов Swagger. Например. В моем проекте есть одна конечная точка:

@ApiOperation(value = "Return a list of Pix Wallets.", httpMethod = "POST", response = DResponse.class)
@PostMapping("/digital-wallet")
public ResponseEntity<DResponse> getDigitalWallets(@RequestBody PixDigitalWalletRequest pixDigitalWalletRequest) {
    return ResponseEntity.ok(pixService.getDigitalWallets(pixDigitalWalletRequest));
}

Когда я открываю документ с чванством, я вижу правильную документацию:

введите описание изображения здесь

Но ... Когда я создаю свой документ YAML, я не вижу свой комментарий (например: Вернуть список кошельков Pix.) В моем документе YAML. Например:

paths:
   /api/pix/digital-wallet:
      post:
         tags:
         - pix-controller
  operationId: getDigitalWallets
  requestBody:
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/PixDigitalWalletRequest'
  responses:
    "200":
      description: default response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DResponse'

Как добавить мои комментарии Swagger в мой документ YAML?


person lucas.iter    schedule 23.10.2020    source источник
comment
Как именно вы создаете файл YAML? Вы также можете попробовать экспортировать файл YAML / JSON из пользовательского интерфейса Swagger, как объяснено здесь.   -  person Helen    schedule 23.10.2020


Ответы (1)


Вы столкнулись с проблемой, потому что используете аннотацию Swagger 1.x с Springdoc, которая полагается на аннотации Swagger 2.x.

Выполните рефакторинг вашего кода, как показано ниже, чтобы решить проблему.

@Operation(summary = "Return a list of Pix Wallets.")
@ApiResponses(value = {
        // 201 as it's a POST method, ideally shoud have empty schema as @Schema(), but put the class name to suit your use-case
        @ApiResponse(responseCode = "201", description = "Created", content = {@Content(mediaType = "application/json", schema = @Schema(DResponse.class))}),
        @ApiResponse(responseCode = "500", description = "Internal Server Error", content = {@Content(mediaType = "application/json", schema = @Schema(implementation = MyErrorResponse.class))})
})
@PostMapping("/digital-wallet")
public ResponseEntity<DResponse> getDigitalWallets(@RequestBody PixDigitalWalletRequest pixDigitalWalletRequest) {
    return ResponseEntity.ok(pixService.getDigitalWallets(pixDigitalWalletRequest));
}

Подробный список всех аннотаций и другие миграционные изменения.

person Debargha Roy    schedule 30.10.2020