RESTful
RESTful 是 HTTP 协议的一种规则
HTTP服务可用端口最大为 65535
HTTP URL
http://domain:addr/path?query#anchor
domain # 域名地址addr # 端口:HTTP:80/HTTPS:443path # 资源路径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 // 网络认证要求复制代码