Dam*_*ien 5 spring swagger spring-boot
我有一个带有两个端点的控制器类
@RestController
@RequestMapping
public class TestController {
@RequestMapping(
value= "/test",
method = RequestMethod.GET)
@ResponseBody
public String getTest() {
return "test without params";
}
@RequestMapping(
value= "/test",
params = {"param"},
method = RequestMethod.GET)
@ResponseBody
public String getTest(@PathParam("param") int param) {
return "test with param";
}
}
Run Code Online (Sandbox Code Playgroud)
一种有参数,一种没有,两者都有效。
如果我使用curl或网络浏览器来访问端点
回报
无参数测试
和
回报
用参数测试
但 swagger ui 仅显示不带参数的用户界面。
如果我将带有参数的请求的请求映射中的值更改为
@RequestMapping(
value= "/testbyparam",
params = {"param"},
method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)
Swagger UI 正确显示两个端点,但我不想根据 swagger 将显示或不会显示的内容来定义我的端点。
有什么方法可以让 swagger ui 正确显示具有匹配值但参数不同的端点?
编辑澄清:
端点工作得很好;/test 和 /test?param=1 都工作得很好,问题是 swagger-ui 不会显示它们。
我希望 swagger ui 显示我定义的端点,但如果不能,那么我就只能忍受 swagger-ui 缺少一些端点。
编辑参考:
在这里回答的人:Proper REST formatted URL with date range
明确表示不要用斜杠分隔查询字符串
他们还说“查询字符串之前不应该有斜杠”。
Ben*_*n M -1
我不清楚你到底想做什么,但我会给出两个解决方案:
如果你想要 PATH 参数,例如GET /test&GET /test/123你可以这样做:
@GetMapping("/test")
public String getTest() {
return "test without params";
}
@GetMapping("test/{param}")
public String getTest(@PathVariable("param") int param) {
return "test with param";
}
Run Code Online (Sandbox Code Playgroud)
如果您需要查询参数(GET /test和GET /test?param=123),那么您需要一个带有可选参数的端点:
@GetMapping("test")
public String getTest(@RequestParam("param") Integer param) {
if(param == null) {
return "test without params";
} else {
return "test with param";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3012 次 |
| 最近记录: |