【问题标题】:Spring REST - At least one RequestParameter mandatorySpring REST - 至少一个 RequestParameter 是必需的
【发布时间】:2016-12-08 21:43:25
【问题描述】:

我有一个方法如下RequestMappings:

@RequestParam(value = "someValue1", required = false) final String someValue1
@RequestParam(value = "someValue2", required = false) final String someValue2

这两个参数都被标记为可选。目前我检查提供了哪个属性并基于该属性采取了一些措施。是否可以强制要求始终存在两个参数中的至少一个?

PS:我不打算创建两个不同的端点。

【问题讨论】:

  • 我不认为对参数有相互依赖的检查。但是为什么不在你的方法中验证它们呢?
  • 是的,这就是我正在做的事情。但是正在环顾四周,以防有更优雅的方式来做到这一点。
  • 我认为这种要求的解决方案会使注释失去其优雅性;-) 尽管如此,这是一个绝对有效的问题。
  • 我一直在寻找相同的概念,我认为最好的方法是验证方法中的所有参数,如果没有发送参数,则返回否定响应。

标签: spring rest


【解决方案1】:

只需将请求参数作为字符串映射发送并将其标记为强制属性。

        public @ResponseBody String your_method(
   @RequestParam(value = "parameterMap", 
    required = true) Map<String,String> params){

                //String someValue1 = params.get("someValue1");
                // String someValue2 = params.get("someValue2");
            } 

这里你必须传递一个或两个参数。

【讨论】:

  • 这是不正确的。你仍然可以传递一个没有值的 Map。
  • 因此,理论上,这应该可以工作:@RequestParam(required = true) @NotNull @Size(max = 1) Map&lt;SearchParamEnum, String&gt; params 其中SearchParamEnum 是接受的参数名称列表。
  • @VijayKalidindi 我会要求查询参数需要以任何方式更改才能完成这项工作吗?我不希望仍然能够将请求中的参数作为简单的查询参数提供。
  • 还有@VijayKalidindi 枚举 SearchParamEnum 会是什么样子。
猜你喜欢
  • 2021-10-21
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 2017-09-01
  • 2018-03-06
  • 2018-07-21
  • 1970-01-01
相关资源
最近更新 更多