springdoc-openapi-ui + swagger không hiểu @PathVariable Required = false flag
Tôi sử dụng thư viện này để tạo tài liệu:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.0</version>
</dependency>
Tôi có bộ điều khiển này:
@RestController
public class TestController {
@GetMapping("/test{hz}")
public String test(@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
Nhưng tôi nhận được tài liệu này:
Tại sao required = falsekhông hoạt động?
Tôi đã thử điều này:
@RestController
public class TestController {
@GetMapping("/test{hz}")
public String test(
@Parameter(description = "foo", required = false)
@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
Nó cũng không hoạt động
EDIT : (Trả lời cho bình luận @Helen) - Tất nhiên tôi biết về điều này:
@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";
}
}
Và tôi đã thử điều này:
@PathVariable(value = "hz", required = false) Optional<String> hz
Nó làm cho tài liệu tồi tệ hơn. vì vậy tôi đã không thêm mã này. Với {"/test", "/test{hz}"}Nó trông như thế này:
Trả lời
Điều này phù hợp với đặc tả OpenAPI.
Mỗi tham số đường dẫn phải được thay thế bằng một giá trị thực khi khách hàng thực hiện lệnh gọi API. Trong OpenAPI, một tham số đường dẫn được xác định bằng cách sử dụng trong: path. Tên tham số phải giống như được chỉ định trong đường dẫn. Ngoài ra, hãy nhớ thêm bắt buộc: true , vì tham số đường dẫn luôn được yêu cầu.
Bạn có thể xem tài liệu:
- https://swagger.io/docs/specification/describing-parameters/#path-parameters