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