Come integrare Swagger con SpringDoc YAML?
Sto usando Swagger per documentare il mio progetto e voglio generare il documento YAML da springdoc. Ma quando creo questa documentazione YAML, YAML non ha i miei commenti su Swagger. Per esempio. Ho un endpoint nel mio progetto:
@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 apro il mio documento di spavalderia posso vedere la documentazione corretta:
Ma ... Quando genero il mio documento YAML non vedo il mio commento (come: "Restituisci un elenco di portafogli Pix.") Nel mio documento YAML. Per esempio:
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'
Come posso aggiungere i miei commenti Swagger nel mio documento YAML?
Risposte
Stai affrontando il problema perché stai utilizzando l'annotazione Swagger 1.x con Springdoc che si basa sulle annotazioni Swagger 2.x.
Rifattorizza il codice come di seguito per risolvere il 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));
}
Fare riferimento alla pagina Migrazione da Springfox - Springdoc per un elenco dettagliato di tutte le annotazioni e altre modifiche alla migrazione.