Springboot中@RequestParam和@PathVariable的用法与区别

今天编写代码时发现路径参数和查询参数的问题 ,不知道用哪个,写篇文章记录一下

RESTful API设计的最佳实践是使用路径参数来标识一个或多个特定资源,而使用查询参数来对这些资源进行排序/过滤

@PathVariable

会用在单个对象的查询上,比如要根据ID值查询学生信息,就会在Postman发送GET请求,后台使用@PathVariable接收

后端是

@RequestMapping(value="/page/{name}/{age}",method=RequestMethod.GET)
public String getName(ModelMap map,@PathVariable("name") String name,@PathVariable("age") int age)
{
    map.addAttribute("name",name);
    map.addAttribute("age",age);
    return "name";
}

接口样式是

http://localhost:8080/page/xiaoming/18

@RequestParam

会用在组合查询多个对象,比如跟据姓名模糊查询和性别组合查询筛选学生,就会发送POST请求,后台使用RequestParam接收
后端:

@RequestMapping(value="/result",method=RequestMethod.GET)
public String resultParam(ModelMap map,@RequestParam String name,@RequestParam int age)
{
    map.addAttribute("name",name);
    map.addAttribute("age",age);
    return "result";
}

接口样式:

http://localhost:8080/result?name=xiaoming&age=20

区别:

1、当URL指向的是某一具体业务资源(或资源列表),例如博客,用户时,使用@PathVariable

这个是举例是为了获取具体某一个缺陷或者用户的时候用

2、当URL需要对资源或者资源列表进行过滤,筛选时,用@RequestParam


版权声明:本文为he1234555原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。