名词解释 REST – REpresentational State Transfer 通俗来讲就是:资源在网络中以某种表现形式进行状态转移。 分解开来: Resource:资源,即数据。 Representational:某种表现形式,比如用JSON,XML,JPEG等; State Transfer:状态变化。通过HTTP动词实现。 八个原则 1.协议:-http/https,编程所遵循的那个协议。
2.域名:(在域名中体现API字样,体现是前后端交互的接口,方便同事阅读和修改) 有两种方式: ①https://api.csdn.com在购买域名中,购买带api的。 ②https://csdn.com/api/在域名后添加路径。 第二种更为省钱和常用。
3.版本
版本需要跟新,统一的规范为https://api.csdn.com/v1/其中v几就代表第几代版本。
4.路径(路径中避免使用动词,资源用名词来表示)如:https://api.csdn.com/v1/users表示第一个版本下人的用户
5.HTTP动词语义
GET (SELECT):从服务器取出资源(一项或多项)。
POST (CREATE):在服务器新建一个资源。
PUT (UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH (UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE (DELETE) :从服务器删除资源。
实例:
GET /Companies:列出所有公司。
POST /Companies:新建一个公司。
GET/Companies/ID:获取某个指定公司的信息。
PUT /Companies/ID:更新某个指定公司的信息(提供该公司的全部信息)。
PATCH /Companies/ID:更新某个指定公司的信息(提供该公司的部分信息)。
DELETE/Companies/ID:删除某个公司。
GET /Companies/ID/users:列出某个指定公司的所有员工。
DELETE /Companies/ID/users/ID:删除某个指定公司的指定员工。
PUT是更新整个,而PATCH是跟新指定的,单个的。 6.巧用查询字符串 实例:
?limit=10:指定返回记录的数量。
?offset=10:指定返回记录的开始位置。
?page=2&per_page=100:指定第几页,以及每页的记录数。
?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
?type_id=1∶指定筛选条件。
7.状态码 ①用HTTP响应码表达此次请求结果。 实例:
200 OK -[GET]:服务器成功返回用户请求的数据。
201 CREATED - [ POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [ *]∶表示一个请求已经进入后台排队(异步任务)
204 No CONTENT -[ DELETE]:用户删除数据成功。
400 INvaLID REQUEST - [ POST/PUT/PATCH ]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized -[*]:表示用户没有权限(令牌、用户名、密码错误)。
②自定义内部的code进行响应 返回结构如下: {‘code’:200,‘data’:{},‘error’:xxx} 解释:状态码是200,返回正确的数据,正确数据包含的内容,错误,返回错误的内容。 在编程中常用自定义的内部的code进行响应,因为HTTP响应码表达此次请求结果,不能完全的反应程序响应所出现的问题,自定义的可以如实反应,方便修改。
8.返回结果(根据HTTP动作的不同。返回的结果的结构也有所不同) 实例:
GET/users:返回资源对象的列表(数组)
GET/users/ zhangsan:返回单个资源对象
POST/users:返回新生成的资源对象
PUT/users/zhangsan:返回完整的资源对象
PATCH/users/zhangsan:返回完整的资源对象DELETE/users/zhangsan:返回一个空文档
|