REST风格简介
- 什么是 REST :
REST(Representational State Transfer)表现形式状态转换
传统风格资源描述形式
http://localhost/user/getById?id=1 (得到id为1的用户)
http://localhost/user/saveUser (保存用户)
- REST风格描述形式
http://localhost/user/1 (得到id为1的用户)
http://localhost/user (保存用户)
- 优点:
- 隐藏资源的访问行为, 无法通过地址得知对资源是何种操作
- 书写简化
- 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源
http://localhost/users 查询全部用户信息 GET (查询)
http://localhost/users/1 查询指定用户信息 GET (查询)
http://localhost/users 添加用户信息 POST (新增/保存)
http://localhost/users 修改用户信息 PUT (修改/更新)
http://localhost/users/1 删除用户信息 DELETE (删除)
注意:
上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如: users、 books、 accounts…
根据REST风格对资源进行访问称为RESTful
小结:
- REST
- 动作4个
- RESTful
REST入门案例
步骤:
- 设定http请求动作
通过@RequestMapping(value=”…”, method=…)注解中的method属性来设定请求动作是GET、POST、PUT、还是DELETE。
- 设定请求参数(路径变量)
首先在url路径中有{id},并且url路径中的变量名要和方法中的形参名称一致。在形参前面添加@PathVariable注解,就可以将路径中的id的值传递给形参。@RequestMapping("users/{id}/")
public String testPathVariable(@PathVariable String id) {
return "id=" + id + ";
}
同样可以接受参数的还有@RequestParam注解,关键点不同的是@RequestParam 是从request里面拿取值,而 @PathVariable 是从一个URI模板里面来填充。@RequestParam主要用于接收http://host:port/path?参数名=参数值数据,这里后面也可以不跟参数值;[http://localhost:8887/test2?id=id2&name=name](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属性的一个别名
REST风格快速开发
- 使用 @RestController 注解开发 RESTful 风格
- 使用 @GetMapping @PostMapping @PutMapping @DeleteMapping 简化 @RequestMapping 注解开发