限制RequestParam数组大小

时间:2018-06-28 19:04:12

标签: java spring

如何限制端点中的@RequestParam数组大小?有任何注释吗?

我要寻找的是我最多可以发送5个参数发送请求:

  • 正确的请求-http://localhost:8888/myEndpoint?param=foo1&param=foo2&param=foo3&param=foo4&param=foo5
  • 请求不正确(参数太多)-http://localhost:8888/myEndpoint?param=foo1&param=foo2&param=foo3&param=foo4&param=foo5&param=foo6

  • 2 个答案:

    答案 0 :(得分:0)

    您需要在服务器代码中进行处理。接受一个请求参数数组并检查大小。我不知道对此有何注释。

    答案 1 :(得分:0)

    如果调用参数(键)的方式并不重要,则可以将Map<K,V>用作@RequestParam

    在春季之前不可能限制地图条目(对此一无所获)。我也尝试在它周围添加一个包装器,并使用注释@Size对其进行验证,这也是不可能的。

    您可以使用的解决方案:在来自请求的Map中创建一个迭代器作为参数,然后将条目添加到新的Map中。

    @RequestMapping(value = "/test",method = RequestMethod.GET)
        public Object test(@RequestParam Map<String,String> map){
    
            Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator();
            int counter = 0; //To limit the parameter
            Map<String,String> resultMap = new HashMap<>(); //Our result map which we will return
            while (entries.hasNext() && counter < 5) { //iterate over map and stop at five entries
                Map.Entry<String, String> entry = entries.next(); //get next entry
                resultMap.put(entry.getKey(),entry.getValue()); //Put the entry in our resultMAp
                counter++; //count up
            }
            return resultMap;
        }