RESTful

RESTful 是 HTTP 协议的一种规则



HTTP服务可用端口最大为 65535



HTTP URL

http://domain:addr/path?query#anchor

domain  # 域名地址
addr    # 端口:HTTP:80/HTTPS:443
path    # 资源路径
query   # 资源筛选参数
anchor  # 锚点:页面定位
复制代码



RESTful API —— 设计要素

1.请求方法

| POST   | 提交 | 返回: 提交的信息
| GET    | 获取 | 返回: 获取到的数据
| PUT    | 替换 | 返回: 被替换的完整信息
| PATCH  | 更新 | 返回: 仅被更新的字段
| DELETE | 销毁 | 返回: 204
复制代码

2.资源路径

http://api.example.com/v1/assets/id

http://      # 请求协议
api.         # API子域
example.com  # 域名
/v1          # API版本
/assets      # 资源路径(复数)
/id          # 资源Id
复制代码

3.过滤信息

  • Query
基本格式: url?key=value
多个条件: url?key=value&key=value
分页示范: url?page=2
复制代码

4.状态代码

  • 常用的响应状态码
200 —— OK                    // 成功返回
201 —— Created               // 成功创建
204 —— No Content            // 成功销毁
400 —— Bad Request           // 语法错误
401 —— Unauthorized          // 没有权限
403 —— Forbidden             // 请求被拒
404 —— Not Found             // 找不到资源
500 —— Internal Server Error // 内部服务器错误
501 —— Not Implemented       // 服务器无法受理
复制代码

5.返回响应信息

{
    "code": 200,
    "message": "",
    "body": ""
}
复制代码




完整的 HTTP 状态码

响应: HTTP/1.1 200 OK

1xx(临时响应)

100 —— Continue             // 继续请求,服务器正在等待
101 —— Switching Protocol   // 服务器准备切换协议
103 —— // 一个新的状态码,可以让服务器在主标题之前尽早发送标题,这有助于预加载等优化
复制代码

2xx(响应成功)

200 —— OK                   // 成功返回了资源
201 —— Created              // 成功创建了资源
202 —— Accepted             // 请求接受但未处理
203 —— Non-Authoritative Information // 返回资源未授权
204 —— No Content           // 成功销毁了资源
205 —— Reset Content        // 重置内容,无任何资源返回
206 —— Partial Content      // 处理了部分请求
复制代码

3xx(请求重定向)

300 —— Multiple Choice      // 选择服务器提供的多种操作
301 —— Moved Permanently    // 永久移除,自动转跳到新的资源
302 —— Found                // 自动转跳到新的资源
303 —— See Other            // 查看资源位置
304 —— Not Modified         // 请求资源未修改
305 —— Use Proxy            // 需要代理
307 —— Temporary Redirect   // 临时重定向
308 —— Permanent Redirect   // 永久重定向
复制代码

4xx(请求错误)

400 —— Bad Request              // 请求字段语法错误
401 —— Unauthorized             // 请求未经授权
403 —— Forbidden                // 请求被服务器拒绝
404 —— Not Found                // 找不到资源
405 —— Method Not Allowed       // 请求方法不允许
406 —— Not Acceptable           // 请求不可接受
407 —— Proxy Authentication Required // 服务器代理需要授权
408 —— Request Timeout          // 请求超时
409 —— Conflict                 // 请求冲突
410 —— Gone                     // 请求的资源已销毁
411 —— Length Required          // 指定有效内容长度标头
412 —— Precondition Failed      // 请求条件无法满足
413 —— Payload Too Large        // 请求体过大
414 —— URI Too Long             // 请求URL过长
415 —— Unsupported Media Type   // 请求的类型不支持
416 —— Requested Range Not Satisfiable // 请求的范围不符合要求
417 —— Expectation Failed       // 服务器未满足请求标头的要求
426 —— Upgrade Required         // 升级所需
428 —— Precondition Required    // 要求先决条件
429 —— Too Many Requests        // 太多的要求
431 —— Request Header Fields Too Large // 请求头字段太大
451 —— Unavailable For Legal Reasons  // 因法律原因不可用
复制代码

5xx(服务器错误)

500 —— Internal Server Error        // 内部服务器错误
501 —— Not Implemented              // 服务器无法受理
502 —— Bad Gateway                  // 服务器网关错误
503 —— Service Unavailable          // 服务器不可用
504 —— Gateway Timeout              // 服务器代理超时
505 —— HTTP Version Not Supported      // 不支持的HTTP版本
511 —— Network Authentication Required // 网络认证要求
复制代码