REST和RESTful理解
REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;
Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标准,是一种思想
Rest架构的主要原则:
1.网络上的所有事物都被抽象为资源
2.每个资源都有一个唯一的资源标识符
3.同一个资源具有多种表现形式(xml,json等)
4.对资源的各种操作不会改变资源标识符 5.所有的操作都是无状态的
符合REST原则的架构方式即可称为RESTful
REST是以资源为核心的,四种常用方法所操作的对象也是资源,对资源的操作是状态转移,
数据的增删改查则是持久层的具体实现,一次状态转移可能会对应多个数据库表的添加修改删除操作,所以他们之间没有严格的一一对应关系。
Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源的架构).
命名规范:
在RESTful接口中,对于URI一个普遍接受的命名规则是:全部小写,用中划线连接。
简述
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
看Url就知道要什么
看http method就知道干什么
服务器根据method的不同来判断浏览器期望做的业务行为
看http status code就知道结果如何
HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。
HTTP 响应及方法
响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。
通过HTTP方法 常用的方法有GET, POST, PUT, DELETE
HTTP方法有三个通用属性:安全、幂等、可缓存
幂等性:对同一REST接口的多次访问,得到的资源状态是相同的。
看执行一次和执行多次的效果是否一样
安全性:对该REST接口访问,不会使服务器端资源的状态发生改变。
在设计实现具有安全性的HTTP方法时(如GET),一定要保证资源状态不变。
可缓存: 缓存风格($)。多数情况下,我们在设计接口时要考虑到GET或HEAD甚至POST响应的内容是有可能被客户端缓存的。
HTTP方法 | 安全性 | 幂等性 |
GET | 是 | 是 |
POST | 否 | 否 |
PUT | 否 | 是 |
DELETE | 否 | 是 |
HEAD | 是 | 是 |
PATCH | 否 | 否 |
SpringMVC实现restful服务
SpringMVC控制器涉及注解:
@RequestMapping
@PathVariable
@ResponseBody
@PostMapping和@PutMapping作用等同,都是用来向服务器提交信息。如果是添加信息,倾向于用@PostMapping,如果是更新信息,倾向于用@PutMapping。
@GetMapping 查询
@DeleteMapping 删除
-----------
参考: