springdoc-openapi-ui + swagger ไม่เข้าใจ @PathVariable required = false flag
Nov 20 2020
ฉันใช้ไลบรารีนี้เพื่อสร้างเอกสารประกอบ:
<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";
}
}
มันใช้ไม่ได้ด้วย
แก้ไข : (คำตอบสำหรับความคิดเห็น @Helen) - แน่นอนฉันรู้เกี่ยวกับสิ่งนี้:
@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}"}ลักษณะเช่นนี้:
คำตอบ
1 brianbro Dec 01 2020 at 20:52
เป็นไปตามข้อกำหนด OpenAPI
พารามิเตอร์พา ธ แต่ละรายการต้องถูกแทนที่ด้วยค่าจริงเมื่อไคลเอ็นต์ทำการเรียก API ใน OpenAPI พารามิเตอร์พา ธ ถูกกำหนดโดยใช้ in: path ชื่อพารามิเตอร์ต้องตรงกับที่ระบุในพา ธ อย่าลืมเพิ่มrequired: trueเนื่องจากต้องใช้พารามิเตอร์พา ธ เสมอ
คุณสามารถดูเอกสารประกอบ:
- https://swagger.io/docs/specification/describing-parameters/#path-parameters