springdoc-openapi-ui + swagger versteht @PathVariable nicht erforderlich = false flag

Nov 20 2020

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 = falsefunktioniert 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

1 brianbro Dec 01 2020 at 20:52

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