路径参数
获得路径中的参数值,采用@PathVariable来指定。此种方式也称为RESTful风格的url。
@Controller
public class PathController {
@RequestMapping("/path/variable/{userid}/{username}")
public String pathVariable(@PathVariable("userid") Integer userid,
@PathVariable(value = "username") String username) {
System.out.println("userid:" + userid);
System.out.println("username:" + username);
return "first";
}
}
注意:
这里如果在path中定义的名字和接受的参数名称一致的话,可以把@PathVariable("userid")省略为、
@PathVariable
如果@PathVariable(value="username", required = false)也就是路径中可以不传值的话,默认是不起作用的可以通过映射多个路径变相解决这个问题:
@RequestMapping(value={"/path/variable/{userid}/{username}","/path/variable/{userid}"})
了解RESTful
-
REST(Representational State Transfer,简称REST)
英文翻译过来叫:“表述性状态转移”,听着很高大尚的样子,其实简单理解一种软件架构风格
-
RESTful
REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful
解释REST
上面REST中说到的“表述性状态转移”,说人话就是:http协议中请求方式GET、POST、PUT、DELETE对应四种基本操作。
| 请求方式 | 对应的操作 |
|---|---|
| GET | 获取资源。比如:通过id获得用户信息 |
| POST | 新建资源。比如:传一个user的POJO对象,新建用户信息。 |
| PUT | 更新资源。比如:传一个user的POJO对象,通过用户id更新用户信息。 |
| DELETE | 删除资源。比如:通过id删除用户信息 |
在访问同一个url的时候,通过不同的请求方式,对应到Controller中不同的处理方法。
RESTful示例
1. Controller代码
@RequestMapping(value = "testRest/{id}", method = RequestMethod.GET)
@ResponseBody
public String testRestGet(@PathVariable String id) {
return "test rest GET :" + id;
}
@RequestMapping(value = "testRest/{id}", method = RequestMethod.POST)
@ResponseBody
public String testRestPost(@PathVariable String id) {
return "test rest POST :" + id;
}
@RequestMapping(value = "testRest/{id}", method = RequestMethod.PUT)
@ResponseBody
public String testRestPut(@PathVariable String id) {
return "test rest PUT :" + id;
}
@RequestMapping(value = "testRest/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String testRestDelete(@PathVariable String id) {
return "test rest DELETE :" + id;
}
这里@ResponseBody理解为直接返回字符串,而不是返回一个页面
2. 采用postman进行测试
3. 代码地址
gitee.com/mayuanfei/s…下的springmvc02
. RESTful思考
通过上面的postman测试后发现,请求的路径其实是没有变化的。仅仅通过不同的请求方式就能映射到不同的方法中去。这一切看起来很美好,but,对于接口使用者来说,并不能达到见名识其意的作用。所以是不是用,怎么用这个RESTful可能还会结合具体的场景给出接口定义。
记忆印记
- 通过@PathVariable来获得url路径中的参数
- REST是一种软件架构风格
- 满足REST约束条件和原则的应用程序或设计就是 RESTful
- 在Controller中通过制定method来把不同的请求方式映射到方法上