本文主要是介绍@RequestParam和@PathVariable的区别和使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @PathVariable 是从一个URI模板里面来填充
@PathVariable
主要用于接收http://host:port/path/{参数值}数据:
http://localhost:8887/test1/id1/name1
根据上面的这个url,你可以用这样的方式来进行获取:
@RequestMapping("test1/{id}/{name}")public String testPathVariable(@PathVariable String id, @PathVariable String name) {return "id=" + id + ", name=" + name;}
@PathVariable
支持下面三种参数:
- name 绑定本次参数的名称,要跟URL上面的一样
- required 这个参数是否必须的
- value 跟name一样的作用,是name属性的一个别名
@RequestParam
主要用于接收http://host:port/path?参数名=参数值数据,这里后面也可以不跟参数值;
http://localhost:8887/test2?id=id2&name=name2
根据上面的这个url,你可以用这样的方式来进行获取:
@RequestMapping("test2")public String testRequestParam(@RequestParam("id") String id, @RequestParam("name") String name) {return "id=" + id + ", name=" + name;}
@RequestParam
支持下面四种参数:
- defaultValue 如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值
- name 绑定本次参数的名称,要跟URL上面的一样
- required 这个参数是否必须的
- value 跟name一样的作用,是name属性的一个别名
@PathVariable和@RequestParam混合使用
http://localhost:8887/test3/id3?name=name3
根据上面的这个url,你可以用这样的方式来进行获取:
@RequestMapping("test3/{id}")public String test3(@PathVariable String id, @RequestParam("name") String name) {return "id=" + id + ", name=" + name;}
对比
- 1.用法上的不同:
PathVariable只能用于接收url路径上的参数,而RequestParam只能用于接收请求带的params - 2.内部参数不同:
PathVariable有value,name,required这三个参数,而RequestParam也有这三个参数,并且比PathVariable多一个参数defaultValue(该参数用于当请求体中不包含对应的参数变量时,参数变量使用defaultValue指定的默认值) - 3.PathVariable一般用于get和delete请求,RequestParam一般用于post请求。
代码
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @Description:* @Author: hmm* @Date: 2021/7/20*/
@RestController
public class TestController {@RequestMapping("test1/{id}/{name}")public String testPathVariable(@PathVariable String id, @PathVariable String name) {return "id=" + id + ", name=" + name;}@RequestMapping("test2")public String testRequestParam(@RequestParam("id") String id, @RequestParam("name") String name) {return "id=" + id + ", name=" + name;}@RequestMapping("test3/{id}")public String test3(@PathVariable String id, @RequestParam("name") String name) {return "id=" + id + ", name=" + name;}
}
这篇关于@RequestParam和@PathVariable的区别和使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!