REST风格简介

  1. 什么是 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 (保存用户)

  1. 优点:
  • 隐藏资源的访问行为, 无法通过地址得知对资源是何种操作
  • 书写简化
  1. 按照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入门案例

步骤:

  1. 设定http请求动作

通过@RequestMapping(value=”…”, method=…)注解中的method属性来设定请求动作是GET、POST、PUT、还是DELETE。

  1. 设定请求参数(路径变量)
    1. @RequestMapping("users/{id}/")
    2. public String testPathVariable(@PathVariable String id) {
    3. return "id=" + id + ";
    4. }
    首先在url路径中有{id},并且url路径中的变量名要和方法中的形参名称一致。在形参前面添加@PathVariable注解,就可以将路径中的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,你可以用这样的方式来进行获取:

  1. @RequestMapping("test2")
  2. public String testRequestParam(@RequestParam("id") String id, @RequestParam("name") String name) {
  3. return "id=" + id + ", name=" + name;
  4. }

@RequestParam 支持下面四种参数:

  1. defaultValue 如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值
  2. name 绑定本次参数的名称,要跟URL上面的一样
  3. required 这个参数是否必须的
  4. value 跟name一样的作用,是name属性的一个别名



image.png

REST风格快速开发

  • 使用 @RestController 注解开发 RESTful 风格

image.png

  • 使用 @GetMapping @PostMapping @PutMapping @DeleteMapping 简化 @RequestMapping 注解开发

image.png