我有一个Rest API,并且我不想强迫客户端发送请求参数。我有近400个api方法,并且我不想将所有参数都设置为“ required = false”
我想覆盖Spring RequestParam的默认行为。我想将RequestParam接口的“ required”属性的默认值设置为“ false”。
有什么方法可以覆盖它吗?如果我不能或不是最佳实践,有什么办法可以解决上述问题。
最佳答案
如上所述,您无法更改默认值。
解决问题的一些可能方法:
将参数标记为可选:
@RequestMapping(...)
public String url(@RequestParam("key") Optional<String> keyValue```){
}
要么
@RequestMapping(...)
public String url(@RequestParam("key") @Nullable String keyValue){
}
(带有“ Nullable”名称部分的任何注释,即javax.annotation.Nullable)
根本不使用RequestParam注释-而是使用Pojo类进行参数绑定:
@RequestMapping(...)
public String url(PojoRequestParameters parameters) {
}
//...
public class PojoRequestParameters {
private String key;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
编写(并注册)自己的注释并使用它代替RequestParam(无法为RequestParam注释创建别名)
在运行时更改注释值(疯狂并且无法用于方法注释),如下所示:https://www.baeldung.com/java-reflection-change-annotation-params