springdoc-openapi-ui + swagger tidak mengerti @PathVariable diperlukan = false flag

Nov 20 2020

Saya menggunakan perpustakaan ini untuk dokumentasi generasi:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.5.0</version>
</dependency>

Saya memiliki pengontrol ini:

@RestController
public class TestController {

    @GetMapping("/test{hz}")
    public String test(@PathVariable(value = "hz", required = false) String hz) {
        return "test";
    }
}

Tapi saya mendapatkan dokumentasi ini:

Mengapa required = falsetidak berhasil?

Saya mencoba ini:

@RestController
public class TestController {

    @GetMapping("/test{hz}")
    public String test(
            @Parameter(description = "foo", required = false)
            @PathVariable(value = "hz", required = false) String hz) {
        return "test";
    }
}

Itu tidak berhasil juga

EDIT : (Jawaban untuk komentar @Helen) - Tentu saja saya tahu tentang ini:

@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";
    }
}

Dan saya mencoba ini:

@PathVariable(value = "hz", required = false) Optional<String> hz

Itu membuat dokumentasi menjadi lebih buruk. jadi saya tidak menambahkan kode ini. Dengan {"/test", "/test{hz}"}Ini terlihat seperti ini:

Jawaban

1 brianbro Dec 01 2020 at 20:52

Ini sesuai dengan spesifikasi OpenAPI.

Setiap parameter jalur harus diganti dengan nilai sebenarnya ketika klien melakukan panggilan API. Di OpenAPI, parameter jalur ditentukan menggunakan in: path. Nama parameter harus sama dengan yang ditentukan di jalur. Ingat juga untuk menambahkan required: true , karena parameter jalur selalu diperlukan.

Anda dapat melihat dokumentasinya:

  • https://swagger.io/docs/specification/describing-parameters/#path-parameters