springdoc-openapi-ui + swagger non capisce @PathVariable required = false flag
Uso questa libreria per la documentazione di generazione:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.0</version>
</dependency>
Ho questo controller:
@RestController
public class TestController {
@GetMapping("/test{hz}")
public String test(@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
Ma ottengo questa documentazione:
Perché required = falsenon funziona?
Ho provato questo:
@RestController
public class TestController {
@GetMapping("/test{hz}")
public String test(
@Parameter(description = "foo", required = false)
@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
Non funziona neanche
EDIT : (risposta per il commento di @Helen) - Certo che lo so:
@RestController
public class TestController {
@GetMapping(value = {"/test", "/test{hz}"})
public String test(
@Parameter(description = "foo", required = false)
@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
E ho provato questo:
@PathVariable(value = "hz", required = false) Optional<String> hz
Rende la documentazione peggiore. quindi non ho aggiunto questo codice. Con {"/test", "/test{hz}"}Sembra così:
Risposte
Questo è conforme alla specifica OpenAPI.
Ogni parametro del percorso deve essere sostituito con un valore effettivo quando il client effettua una chiamata API. In OpenAPI, un parametro di percorso viene definito utilizzando in: path. Il nome del parametro deve essere lo stesso specificato nel percorso. Ricorda anche di aggiungere required: true , perché i parametri del percorso sono sempre obbligatori.
Puoi dare un'occhiata alla documentazione:
- https://swagger.io/docs/specification/describing-parameters/#path-parameters