我有一个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

10-07 15:46