REST 是 RepresentationalStateTransfer 的缩写,一般中文译为 “表征状态转移”,Roy Thomas Fielding 在他2000年的PhD论文中发明了这个概念。首先需要了解的是REST并不是一种规范或者具体的框架,它描述的是一种构建网路应用的时的一些“约束”,这些约束可以帮助我们构建更好的网络应用。
这些约束包括:
- Client–server 客户端和服务端分离,客户端负责状态维护/渲染后者负责业务/存储
- Stateless 服务器不维护应用状态,每个请求包含足够的信息来请求数据
- Cacheable 数据可以缓存,响应可以显式或隐式的指定数据能否缓存
- Layered system 客户端不需要知道是否直接和服务器端通信,中间可能有比如负载均衡
- Code on demand (optional) 服务器端可以临时扩展客户端的功能,比如JavaScript
- Uniform interface 统一接口的约束是所有设计REST服务的基础,它还包含几个方面。
关于Uniform interface 包含下面几个方面:
- Identification of resources 资源识别,资源的表述方式和资源的实际形态分离,比如用XML或者JSON来表述资源而服务器内部可能用数据库来存储资源
- Manipulation of resources through these representations 资源包含足够的元数据来操作资源
- Self-descriptive messages 每条消息都包含足够的元信息来表述自己如何被消费
- Hypermedia as the engine of application state (HATEOAS) 这个有点复杂!!
时间: 2024-10-10 01:39:11