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