我理解的RESTful设计风格

名词解释
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:返回一个空文档
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如鸿毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值