springdoc-openapi-ui + swagger @PathVariable की आवश्यकता नहीं है = गलत ध्वज
मैं इस पुस्तकालय का उपयोग पीढ़ी के प्रलेखन के लिए करता हूं:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.5.0</version>
</dependency>
मेरे पास यह नियंत्रक है:
@RestController
public class TestController {
@GetMapping("/test{hz}")
public String test(@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
लेकिन मुझे यह दस्तावेज मिलता है:
required = falseकाम क्यों नहीं करता?
मैंने यह कोशिश की:
@RestController
public class TestController {
@GetMapping("/test{hz}")
public String test(
@Parameter(description = "foo", required = false)
@PathVariable(value = "hz", required = false) String hz) {
return "test";
}
}
यह भी काम नहीं करता है
संपादित करें : (@ टिप्पणी के लिए उत्तर) - बेशक मैं इस बारे में जानता हूं:
@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";
}
}
और मैंने यह कोशिश की:
@PathVariable(value = "hz", required = false) Optional<String> hz
यह प्रलेखन को बदतर बनाता है। इसलिए मैंने यह कोड नहीं जोड़ा। साथ {"/test", "/test{hz}"}यह इस तरह दिखता है:
जवाब
यह ओपनएपीआई विनिर्देश के अनुरूप है।
जब क्लाइंट API कॉल करता है, तो प्रत्येक पथ पैरामीटर को वास्तविक मूल्य के साथ प्रतिस्थापित किया जाना चाहिए। OpenAPI में, एक पथ पैरामीटर का उपयोग करके परिभाषित किया गया है: पथ। पैरामीटर नाम पथ में निर्दिष्ट के समान होना चाहिए। आवश्यक जोड़ना भी याद रखें : सच है , क्योंकि पथ पैरामीटर हमेशा आवश्यक होते हैं।
आप प्रलेखन पर एक नजर डाल सकते हैं:
- https://swagger.io/docs/specification/describing-parameters/#path-parameters