REST风格
简介
- REST(Representational State Transfer),表现形式状态转换
    - 传统风格资源描述形式:
        - http://localhost/user/getById?id=1
- http://localhost/user/saveUser
 
- REST风格描述形式:
        - http://localhost/user/1
- http://localhost/user
 
 
- 传统风格资源描述形式:
        
- 优点:
    - 隐藏了资源的访问行为,无法通过地址得知对资源是何种操作
- 书写简化
 
- 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作:
| 路径 | 操作 | 行为动作 | 
|---|---|---|
| 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的格式描述,表示此类资源,而非单个资源。
- 根据REST风格对资源进行访问称为RESTful
如何使用
在类前添加@RequestMapping指定公共前缀。
在方法前的@RequestMapping注解中指定method属性为RequestMethod.方式即可。
同时可以在参数前添加@PathVariable表示此参数从路径获取,并在@RequestMapping注解的value中设置{变量名}的占位符,即示例中/1
关于几个注解的区别
- @RequestBody和- @RequestParam以及- @PathVariable
- 区别:
    - @RequestParam用于接收url地址传参或表单传参
- @RequestBody用于接收json数据
- @PathVariable用于接收路径参数,使用- {参数名}描述路径参数
 
- 应用:
    - 后期开发中,发送请求参数超过1小时,以json格式为主,@RequestBody应用较广
- 如果发送非json数据,选用@RequestParam接收请求参数
- 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收参数
 
- 后期开发中,发送请求参数超过1小时,以json格式为主,
快速开发
- 类前的@Controller和@ResponseBody可以简写为@RestController
- 方法前的@RequestMapping(method = RequestMethod.POST)可以简写为@PostMapping,其他请求格式则以此类推,可以在属性中指定@PathVariable的参数。
