【发布时间】:2019-05-14 07:01:54
【问题描述】:
我在创建一些 REST-API 时遇到了一些问题。
我希望某些 API 有不同的参数。
例如:
path?include="stack"
path?exclude="overflow"
我想到了两种方法。
- 首先:Create API 可以接收控制器中的所有参数和进程。
@GetMapping
public ResponseEntity getByFilter(@RequestParam @Nullable final String exclude,
@RequestParam @Nullable final String include){
// any process to distinguish.
}
- 第二:创建多个API可以接收一个参数。
@GetMapping(params = "include")
public ResponseEntity getByInclude(@RequestParam final String include){
// do anything
}
@GetMapping(params = "exclude")
public ResponseEntity getByInclude(@RequestParam final String exclude){
// do anything
}
但两者都有问题。
首先:逻辑将增加参数。
第二:我用于SpringBoot的SwaggerDocument不能支持相同的路径,不同的参数。如果我使用“enableUrlTemplating”,我的团队将手动管理 SwaggerDocument。
我该如何解决这些问题?
感谢阅读。
【问题讨论】:
-
采用第一种方法,您需要验证只传递一个参数
-
为什么不创建 2 个不同的 url?例如,第一个可以是
/path/include?type="stack",而第二个可以是/path/exclude?type="overflow"。 -
@DimitarSpasovski 我想获取“路径”资源,而不是排除或包含。
-
@choihyunjin 你想要只有控制器来做这个吗?
标签: java spring spring-boot swagger-ui