Restful接口风格
注:虽然不是强制要求的接口书写格式,但是是强烈建议所有开发人员都可以按照此接口规范来定义接口
自从Roy Fielding博士在2000年他的博士论文中提出RESTopen in new window(Representational State Transfer)风格的软件架构模式后,REST就基本上成为Web API的标准了。
restful是一种风格,可以遵循,也可以不遵循,但是现在他已经变成主流。
1、Rest架构的主要原则
- 网络上的所有事物都被抽象为资源。
- 每个资源都有一个唯一的资源标识符。
- 同一个资源具有多种表现形式他可能是xml,也可能是json等。
- 对资源的各种操作不会改变资源标识符。
- 所有的操作都是无状态的。
- 符合REST原则的架构方式即可称为RESTful。
2、什么是Restful
Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务,rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源的架构).
在restful风格中,我们将互联网的资源抽象成资源,将获取资源的方式定义为方法,从此请求再也不止get和post了:
客户端请求 | 原来风格URL地址 | RESTful风格URL地址 |
---|---|---|
查询所有用户 | /user/findAll | GET /user |
查询编号为1的用户 | /user/findById?id=1 | GET /user/1 |
新增一个用户 | /user/save | POST /user |
修改编号为1的用户 | /user/update | PUT /user/1 |
删除编号为1的用户 | /user/delete?id=1 | DELETE /user/1 |
Spring MVC 对 RESTful应用提供了以下支持
- 利用@RequestMapping 指定要处理请求的URI模板和HTTP请求的动作类型
- 利用@PathVariable讲URI请求模板中的变量映射到处理方法参数上
- 利用Ajax,在客户端发出PUT、DELETE动作的请求
3、数据过滤
我们想获取所有用户,使用如下url即可/user
。但是真是场景下,我们可能需要需要一些条件进行过滤:
例如:我们需要查询名字叫张三的前10条数据,使用以下场景即可:
/user?name=jerry&pageSize=10&page=1
第一:查询的url不变,变的是条件,我们只需要同伙url获取对应的参数就能实现复杂的多条件查询。
4、RequestMapping中指定请求方法
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@RequestMapping(value = "/add", method = RequestMethod.POST)
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
当然还有更好用的
@GetMapping("/user/{id}")
@PostMapping("/user")
@DeleteMapping("/user/{id}")
@PutMapping("/user/{id}")