REST (Represent State Transfer, 表现层状态转换) 是一种 API 的设计风格,源于 Roy Thomas Fielding 博士于 2000 年的博士论文。

RESTful API 有下面的这些关键特性和设计原则

  • 资源是由 URI 来指定。
  • 对资源的操作包括获取、创建、修改和删除,这些操作正好对应 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法。
  • 通过操作资源的表现形式来操作资源。
  • 资源的表现形式则是 XML 或者 HTML,取决于读者是机器还是人、是消费 Web 服务的客户软件还是 Web 浏览器。当然也可以是任何其他的格式,例如 JSON。

Stateless

REST API 一个重要的特性是要求 API 是 stateless (无状态的), 即要求服务器仅仅依靠当前请求的所给信息来处理请求,不应该依赖任何保存在服务器端的状态信息。

  1. 对于一个集群的多个服务器来说,一个请求无论发送到哪一个服务器都应该具有相同的返回,服务器中不应该保存任何和特定用户相关的信息;
  2. 对于单个服务器来说,一个请求的结果不能受到前一个请求的影响。

RESTful API 设计的层次

LevelFlag
LEVEL-3Hypermedia/HATEOAS
LEVEL-2使用 HTTP Methods 来代表请求的操作
LEVEL-1使用以资源名命名的 URL

RESTful API 的版本管理

methodsexample
URLexample/v1/resources实现简单
Queryexample/resources?v=2实现简单
Headercustom-header:api-version=2更符合 REST 的原则
Media TypeAccept: application/resources.v2.json更符合 REST 的原则

Error handling

以 HTTP code 来表示请求的结果

References