创建一些REST-API时遇到了一些问题。
我希望某些API具有不同的参数。
例如:
path?include="stack"
path?exclude="overflow"
我想了两种方法。
@GetMapping
public ResponseEntity getByFilter(@RequestParam @Nullable final String exclude,
@RequestParam @Nullable final String include){
// any process to distinguish.
}
@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。
我该如何解决这些问题?
感谢阅读。
答案 0 :(得分:0)
我会提出您的第一个建议,同时定义@RequestParam和代码,首先检查是否定义了一个参数。
然后关于Swagger文档,您可以添加:
@ApiParam(value = "Use this parameter to exclude some resources")
@ApiOperation(value = "Endpoint name", notes = "Here you can put the description of the behavior you are expecting, write here if the parameters are to be used at the same time, are mutually exclusive, if you have to set always one...", response = YourResponseDTO.class)
希望有帮助:-)
答案 1 :(得分:0)
您只能使用一个控制器来执行此操作。像
这样编写控制器@GetMapping
public ResponseEntity getByFilter(@RequestParam(value="exclude", required=false) String exclude,@RequestParam(value="include", required= flase)String include){
// any process to distinguish.
}