当请求参数互斥时,在@Controller方法上设计API的更好方法是什么?
假设有一个API来提供与请求参数匹配的用户列表.
代码是:
public ResponseEntity getList(@RequestParam(required = false) Integer userId,@RequestParam(required = false) User.Type userType,@RequestParam(required = false) Integer age) {
List
这是重点:
用户无法使用多个请求参数进行查询.只有一个请求参数或没有请求参数有效(请求中只应存在userId,age或type中的一个).
我不确定为这种情况设计API的更好方法是什么.你能给我一些建议吗?
最佳答案
我喜欢这些家伙在评论中建议的方法:
原文链接:https://www.f2er.com/spring/431401.html@RequestMapping(value = "...",params = {"!userType","!userAge"})
public ResponseEntity
在您开始管理每个端点的限制之前,它看起来健壮且可行.它看起来很乏味,很难维护.此外,我不确定没有参数的终点会如何反应.是否会被其他方法调用或遮蔽?
我建议引入条件 – 每个端点的要求,而不是写限制.它可以是Map< String,Function< String,List< User>>>在下一格式中:
我还建议你将所有传入的请求参数收集到一个Map< String,String>按大小验证它.
public class Controller {
private Map