RESTful 设计风格规范


分类: 编程
评论: 0

RESTful 设计风格规范



分类: 编程
评论: 0

RESTful 是什么?

一种软件架构,设计风格,全称为 Representational State Transfer,但并不是标准,只是风格,根据该风格开发的 api 也简洁、易管理。

RESTful 有什么用?

一套接口应该满足以下几点:

RESTful 的设计理念基于 HTTP 协议,它是一种设计风格,没有规定一定如何实现,但是提供了很好的设计理念。

风格的统一,使得不需要过多的解释,就能让使用者明白该如何使用,同时也会有很多现成的工具来帮助我们实现 RESTful 风格的接口

设计原则

一、HTTPS

防止数据在传输过程中被篡改和窃听。

二、域名

将 api 请求接口与区分开,例如

https://api.huasio.com
// or
https://www.huasio.com/api

三、版本控制

随之时间的改变,项目api也肯定会有所更改,所以开发新版本的 api 得时候需要更好的管理 api 版本。

例如:将版本号直接加入 URL 中

https://api.larabbs.com/v1
https://api.larabbs.com/v2

使用 HTTP 请求头的 Accept 字段进行区分

https://api.larabbs.com/
    Accept: application/prs.larabbs.v1+json
    Accept: application/prs.larabbs.v2+json

四、URL 定位资源

在 RESUful 中,一切皆是资源,每一个 URL 就是一个资源。资源应该是名词,并且多数时候是复数。

五、资源过滤

提供合理的参数,请求合适数据。

六、状态码

HTTP 提供的状态码:

七、调用频率

为避免攻击,以及恶意请求,应该对 ip 限制请求次数。到了阈值之后对 ip 禁止请求等一些处理。

八、数据响应格式

一般常用的数据格式是 JSON,若需要 XML,需要在 Accept 头指定数据格式。

九、编写文档

编写接口,当然得配备对应得文档,一般来说需要包含以下几点:

十、使用 HTTP 动词描述请求操作

HTTP 提供的一些动词操作,RESTful 也利用了这些动词。

术语:幂等性:意思就是,一次或多次访问同一个资源的数据一致性。

动词描述是否幂等
GET获取资源
POST创建资源
PUT更新资源,客户端提供完整的资源数据
PATCH更新资源,客户端提供部分的资源数据
DELETE删除资源