Comment intégrer Swagger avec SpringDoc YAML?
J'utilise Swagger pour documenter mon projet et je veux générer le document YAML à partir de springdoc. Mais lorsque je génère cette documentation YAML, le YAML n'a pas mes commentaires sur la documentation Swagger. Par exemple. J'ai un point de terminaison dans mon projet:
@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));
}
Lorsque j'ouvre mon document swagger, je peux voir la documentation correcte:
Mais ... Lorsque je génère mon document YAML, je ne vois pas mon commentaire (comme: "Renvoyer une liste de Wallets Pix.") Dans mon document YAML. Par exemple:
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'
Comment puis-je ajouter mes commentaires Swagger dans mon document YAML?
Réponses
Vous êtes confronté au problème car vous utilisez l'annotation Swagger 1.x avec Springdoc qui repose sur les annotations Swagger 2.x.
Refactorisez votre code comme ci-dessous pour résoudre le problème
@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));
}
Reportez-vous à la page Migrer depuis Springfox - Springdoc pour une liste détaillée de toutes les annotations et autres changements de migration.