springdoc-openapi-ui + swagger tidak mengerti @PathVariable diperlukan = false flag
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
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