Representational State Transfer 表述性状态转移
REST是一组架构的约束和原则,符合REST原则的架构称之为RESTful架构
RESTful架构设计
1. 资源与URI
URI 设计准则
- 使用_或-来让URI可读性更好
- 使用/来表示资源的层级关系
- 使用?用来过滤资源
- ,或;可以用来表示同级资源的关系
- 一组资源用名字的复数的形式
2.统一资源接口
接口应该使用标准的HTTP方法如GET,DELETE,PUT和POST,并遵循这些方法的语义,同时遵循http响应状态码
方法 | 幂等性 | 安全性 |
---|---|---|
GET | yes | yes |
HEAD | yes | yes |
PUT | yes | no |
POST | no | no |
DELETE | yes | no |
PATCH | no | no |
2.资源的表述
资源的表述包括数据和描述数据的元数据,在http中,这主要体现在请求头中的accept 和 content-type等。例如
# Request
GET https://api.github.com/orgs/github HTTP/1.1
Accept: application/json
# Response
HTTP/1.1 200 OK
Content:application/json;charset=utf-8
Accept可以更加丰富的表述
Accept: vnd.example-com.foo+json; version=1.0
Accept: vnd.example-com.foo+json; version=1.2
Accept: vnd.example-com.foo+json; version=2.0
3.资源的链接
超媒体即应用状态引擎,即要求在表述格式和响应内容里边加入链接来引导客户端。在 RESTful 应用程序中的超媒体
4. 状态的转移
状态应该区分应用状态和资源状态,客户端负责维护应用状态,而服务端维护资源状态。客户端与服务端的交互必须是无状态的,并在每一次请求中包含处理该请求所需的一切信息。服务端不需要在请求间保留应用状态,只有在接受到实际请求的时候,服务端才会关注应用状态。这种无状态通信原则,使得服务端和中介能够理解独立的请求和响应。
相关资料
网友评论