REST_API规范整理

RESTful API是一套互联网应用程序的API设计理论,遵循http通信。

REST_API基本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*------------------------------------------
* REST_API
*------------------------------------------
*
* 每一个URI代表一种资源;
* 客户端和服务器之间,传递这种资源的某种表现层;
* 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
*
* GET /user:列出所有用户
* POST /user:新建一个用户
* GET /user/ID:获取某个指定用户的信息
* PUT /user/ID:更新某个指定用户的信息(提供该用户的全部信息)
* PATCH /user/ID:更新某个指定用户的信息(提供该用户的部分信息)
* DELETE /user/ID:删除某个用户
* GET /user/ID/city:列出某个指定用户的所有城市
* DELETE /user/ID/city/ID:删除某个指定用户的指定城市
*
* GET(SELECT):从服务器取出资源(一项或多项)。
* POST(CREATE):在服务器新建一个资源。
* PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
* DELETE(DELETE):从服务器删除资源。
* PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
* HEAD : 从服务器获取报头信息(不是资源)
*
* application/json: JSON数据格式
* application/xhtml+xml:XHTML格式
* application/xml: XML数据格式
* application/atom+xml:Atom XML聚合格式
*
* API根路径
* https://api.example.com(API专用域名)
* https://example.org/api/(主域名下专有标识)
* https://api.example.com/v1/(专用域名及版本号)
*
* 不规范的URL(网上汇款,从账户1向账户2汇款500元)
* (错误) POST /accounts/1/transfer/500/to/2
* (正确) POST /transaction HTTP/1.1
  Host: 127.0.0.1
  from=1&to=2&amount=500.00
* 正确的写法是把动词transfer改成名词transaction,资源不能是动词,但是可以是一种服务
*
* 过滤信息
* ?limit=10:指定返回记录的数量
* ?offset=10:指定返回记录的开始位置。
* ?page=2&per_page=100:指定第几页,以及每页的记录数。
* ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
* ?animal_type_id=1:指定筛选条件
* 参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /user/ID/city 与 GET /city?user_id=ID 的含义是相同的。
*
* 状态吗
* 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
* 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
* 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
* 204 NO CONTENT - [DELETE]:用户删除数据成功。
* 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
* 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
* 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
* 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
* 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
* 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
* 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
* 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
*/

REST_API转换工具(自定义)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* [restapi restapi]
* @param {[type]} u ['/user/:id']
* @param {[type]} pars [[12]]
* @return {[type]} ['/user/12']
*/
function restapi(u,pars){
const pa=[];
return u.replace(/:(\w+)/img,function(a){return pars[pa.push(a)-1]})
}
eg:
restapi('/user/:id',[12])
返回:/user/12