Como integrar o Swagger com SpringDoc YAML?
Estou usando o Swagger para documentar meu projeto. E quero gerar o documento YAML do springdoc. Mas quando eu gero esta documentação YAML, o YAML não tem meus comentários de doc do Swagger. Por exemplo. Tenho um endpoint em meu projeto:
@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));
}
Quando abro meu documento de swagger, posso ver a documentação correta:
Mas ... Quando eu gero meu documento YAML, não vejo meu comentário (como: "Devolver uma lista de carteiras Pix.") Em meu documento YAML. Por exemplo:
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'
Como posso adicionar meus comentários Swagger em meu documento YAML?
Respostas
Você está enfrentando o problema porque está usando a anotação do Swagger 1.x com Springdoc, que depende das anotações do Swagger 2.x.
Refatore seu código conforme abaixo para resolver o problema
@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));
}
Consulte a página Migrando do Springfox - Springdoc para uma lista detalhada de todas as anotações e outras mudanças de migração.