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的参数。