REST is the abbreviation of Representational State Transfer.
表征性状态转移
Representation - Resource
Representation are resources represented by Uniform Resource Identifier(URI). We would like to make representations identifiable and easy to understand.
- 使用
_
或-
来让URI可读性更好 - 使用
/
来表示资源的层级关系 - 使用
?
用来过滤资源 -
,
或;
可以用来表示同级资源的关系
统一接口原则
RESTful架构应该遵循统一接口原则。统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法,并遵循这些方法的语义。
给资源的表述提供链接
超媒体即应用状态引擎
Hypermedia enable us to jump from one webpage to another by URI links. RESTful API contains hypermedia as the engine of application state, which provides us the linkage between webpages by including URIs in HttpResponses.
使用超媒体来增强资源的连通性。
无状态通信原则,并不是说客户端应用不能有状态,而是指服务端不应该保存客户端状态。
状态应该区分应用状态和资源状态,客户端负责维护应用状态,而服务端维护资源状态。
客户端与服务端的交互必须是无状态的,并在每一次请求中包含处理该请求所需的一切信息。
服务端不需要在请求间保留应用状态,只有在接受到实际请求的时候,服务端才会关注应用状态。
在多次请求中,同一客户端也不再需要依赖于同一服务器,方便实现高可扩展和高可用性的服务端。
这种无状态通信原则,使得服务端和中介能够理解独立的请求和响应。
但有时候我们会做出违反无状态通信原则的设计,例如利用Cookie跟踪某个服务端会话状态,
状态转移到这里已经很好理解了, "会话"状态不是作为资源状态保存在服务端的,而是被客户端作为应用状态进行跟踪的。客户端应用状态在服务端提供的超媒体的指引下发生变迁。服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。
网友评论