我在spring boot中有一个rest api:
@GetMapping("/test")
public MyClass getData() {
return something;
}
最多可以使用10个requestparams请求此端点。我当然知道所有10个可能的requestparams,但是客户端可以选择使用0到所有10个requestparams之间的任意位置进行请求。
现在我需要一种方法来处理这个问题,而不需要将所有10个requestparams作为getdata()方法中的参数插入。是否不可能在一个类中注册所有可能的requestparams,并将该类用作getdata()的参数?
大概是这样的:
public class ParamClass {
private @RequestParam("ParamOne") String ParamOne;
private @RequestParam("ParamTwo") Set<String> ParamTwo;
private @RequestParam("ParamThree") Integer ParamThree;
}
然后
@GetMapping("/test")
public MyClass getData(@RequestParam ParamClass params) {
return something;
}
请注意:参数可以是不同的类型(字符串、int、set等),因此下面的解决方案非常接近,但无法解决它,因为Map需要一致的值类型:如何使用spring mvc使用@requestparam捕获多个参数?
3条答案
按热度按时间wribegjk1#
一种方法是接收带有参数的Map,问题是所有参数都具有相同的类型,您必须在代码中强制转换为正确的类型:
67up9zun2#
您可以在方法中定义所有参数并将其设置为“非必需”。
然后,您可以选择在url中定义哪些参数。其他的都是空的。或者在中定义默认值
RequestParam
-注解。2w3rbyxf3#
您可以使用@requestbody注解。它将httprequest主体Map到类对象。由于SpringBoot的类路径中有jackson,它将自动反序列化入站httprequest主体到java对象上。
}
客户端应将json数据发送到api/测试