RESTful API 中的 REST 是 representation state transfer 的缩写,直译过来是表现层状态转换。

RESTful 的设计理念就是将我们的数据都抽象成一个资源(resource),然后通过 HTTP 请求对这些资源进行增查改删(CRUD, create, read, update, and delete)的操作。

资源URL

我们通常使用单词的单数来表示一个资源。

单个用户:http://example.com/user

单个帖子:http://example.com/post

用单词的复数来表示资源的列表。

用户列表:http://example.com/users

帖子列表:http://example.com/posts

用复数 + ID 的表示单个资源。

ID 为 3 的用户:http://example.com/users/3

ID 为 4 的帖子:http://example.com/posts/4

请求方法

使用不同的 HTTP 请求方法表示不同的操作:

方法 描述
GET 一般是默认的方法,表示获取一个资源。(查,read)
POST 生成一个资源。(增,create)
PUT 修改一个资源。(改,update)
DELETE 删除一个资源。(删,delete)

比如发布一个帖子

返回状态码

对于操作的结果,用状态码进行初步的表示,比如 200 就表示成功。

  1. 信息响应 (100199)
  2. 成功响应 (200299)
  3. 重定向消息 (300399)
  4. 客户端错误响应 (400499)
  5. 服务端错误响应 (500599)

$$tip

一般来说,状态码的数量不足以详尽地表示所有所有的错误,所以一般只使用一个状态码表示错误,然后再在正文当中使用公司自己定义的错误码。

比如三眼鸭的接口错误就统一使用 400 状态码,再在响应正文中标明错误。

密码错误:

{
    code: 1100,
    msg: "用户名或密码错误。"
}

$$

RESTful API 不是 HTTP

RESTful API 是一个数据交换规范,而 HTTP 是一种通信协议, RESTful API 是基于 HTTP 实现的。