springdoc-openapi-ui + swagger versteht @PathVariable nicht erforderlich = false flag
Ich benutze diese Bibliothek für die Generierungsdokumentation:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.0</version>
</dependency>
Ich habe diesen Controller:
@RestController
public class TestController {
@GetMapping("/test{hz}")
public String test(@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
Aber ich bekomme diese Dokumentation:

Warum required = false
funktioniert das nicht?
Ich habe es versucht:
@RestController
public class TestController {
@GetMapping("/test{hz}")
public String test(
@Parameter(description = "foo", required = false)
@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
Es funktioniert auch nicht
EDIT : (Antwort auf @ Helen Kommentar) - Natürlich weiß ich darüber:
@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";
}
}
Und ich habe es versucht:
@PathVariable(value = "hz", required = false) Optional<String> hz
Das macht die Dokumentation noch schlimmer. Also habe ich diesen Code nicht hinzugefügt. Mit {"/test", "/test{hz}"}
Es sieht so aus:

Antworten
Dies entspricht der OpenAPI-Spezifikation.
Jeder Pfadparameter muss durch einen tatsächlichen Wert ersetzt werden, wenn der Client einen API-Aufruf ausführt. In OpenAPI wird ein Pfadparameter mit in: path definiert. Der Parametername muss mit dem im Pfad angegebenen übereinstimmen. Denken Sie auch daran, erforderlich hinzuzufügen : true , da Pfadparameter immer erforderlich sind.
Sie können sich die Dokumentation ansehen:
- https://swagger.io/docs/specification/describing-parameters/#path-parameters