我们在使用Springboot或SpringMVC写controller的时候,对应的接口方法经常需要传参数,而参数注解中@RequestParam、@QueryParam、@PathParam和@PathVariable都可以实现,那她们主要有什么区别呢?我们来简单看下,
一、先看区别
1、RequestParam和QueryParam都是采用键值对的方式取值,方法名后面加 "?" 开始,多个参数用 "&" 拼接,格式为:
/getInfos?pageNum=1&pageSize=10
2、PathParam和PathVariable是通过路径映射取值,参数都用 "/" 按照约定的顺序拼接在方法后面,格式为:
/getInfos/1/10
3、QueryParam和PathParam都是是JAX-RS自身的注解,不需要额外导包。RequestParam和PathVariable是Spring框架中的注解,需要额外导包。还有就是不同注解的参数不一致。
二、@RequestParam 的用法
RequestParam是Spring中的注解,源码如下,
注解中有四个配置参数。使用方法:@RequestParam(value = "pageNum", required = false, defaultValue = "1")
二、@QueryParam 的用法
QueryParam是JAX-RS自身的注解,不需要额外导包。
注解中只有一个配置参数。使用方法:@QueryParam("date") String date
三、@PathParam 的用法
PathParam是JAX-RS自身的注解,不需要额外导包。
注解中只有一个配置参数。使用方法:@PathParam("userId") String userId
四、@PathVariable 的用法
PathVariable是Spring中的注解,源码如下,
注解中有三个配置参数。使用方法:@PathVariable(value = "para1", required = false) String para1
好了,上面四个注解其实功能差不多,主要是个请求方式的区别,大家可以根据自己项目的实际情况格式统一一下就可以了。