Restful设计规范,先后端分离的优缺点对比

Restful

REST是设计风格而不是标准。是指客户端和服务器的交互形式。咱们须要关注的重点是如何设计REST风格的网络接口。html

  • REST的特色:
  • 具象的(目标)。通常指表现层,要表现的对象就是资源。好比,客户端访问服务器,获取的数据就是资源。好比文字、图片、音视频等。前端

  • 表现(目标实体):资源的表现形式。txt格式、html格式、json格式、jpg格式等。浏览器经过URL肯定资源的位置,可是须要在HTTP请求头中,用Accept和Content-Type字段指定,这两个字段是对资源表现的描述。数据库

  • 状态转换(动做):客户端和服务器交互的过程。在这个过程当中,必定会有数据和状态的转化,这种转化叫作状态转换。其中,GET表示获取资源,POST表示新建资源,PUT表示更新资源,DELETE表示删除资源。HTTP协议中最经常使用的就是这四种操做方式。json

    • RESTful架构:
    • 每一个URL表明一种资源;
    • 客户端和服务器之间,传递这种资源的某种表现层;
    • 客户端经过四个http动词,对服务器资源进行操做,实现表现层状态转换。

 

如何设计符合RESTful风格的API:

一 、域名:后端

将api部署在专用域名下:api

http://api.example.com

或者将api放在主域名下浏览器

http://www.example.com/api/

2、 版本bash

将API的版本号放在url中。服务器

http://www.example.com/api/v1.0restful

3、 路径

路径表示API的具体网址。每一个网址表明一种资源。 资源做为网址,网址中不能有动词只能有名词,通常名词要与数据库的表名对应。并且名词要使用复数。

正确示例: http://www.example.com/api/v1.0/goods

错误示例:  http://www.example.com/app/getgoods     #  包含动词

4、 使用标准的HTTP方法

对于资源的具体操做类型,由HTTP动词表示。 经常使用的HTTP动词有四个。

GET     SELECT :从服务器获取资源。
POST    CREATE :在服务器新建资源。
PUT     UPDATE :在服务器更新资源。
DELETE  DELETE :从服务器删除资源。

示例:

#获取指定商品的信息 GET http://www.example.com/goods/ID #新建商品的信息 POST http://www.example.com/goods #更新指定商品的信息 PUT http://www.example.com/goods/ID #删除指定商品的信息 DELETE http://www.example.com/goods/ID

5、 过滤信息

若是资源数据较多,服务器不能将全部数据一次所有返回给客户端。API应该提供参数,过滤返回结果。 实例:

#指定返回数据的数量 http://www.example.com/goods?limit=10 #指定返回数据的开始位置 http://www.example.com/goods?offset=10 #指定第几页,以及每页数据的数量 http://www.example.com/goods?page=2&per_page=20

6、 状态码(先后端分离的开发都要用到状态码)

服务器向用户返回的状态码和提示信息,经常使用的有:

200 OK :服务器成功返回用户请求的数据 201 CREATED :用户新建或修改数据成功。 202 Accepted:表示请求已进入后台排队。 400 INVALID REQUEST :用户发出的请求有错误。 401 Unauthorized :用户没有权限。 403 Forbidden :访问被禁止。 404 NOT FOUND :请求针对的是不存在的记录。 406 Not Acceptable :用户请求的的格式不正确。 500 INTERNAL SERVER ERROR :服务器发生错误。



7、 自定义错误信息

通常来讲,服务器返回的错误信息,以键值对的形式返回。

{
    error:'Invalid API KEY' }
 
8、 响应结果

针对不一样结果,服务器向客户端返回的结果应符合如下规范。

#返回商品列表 GET http://www.example.com/goods #返回单个商品 GET http://www.example.com/goods/cup #返回新生成的商品 POST http://www.example.com/goods #返回一个空文档 DELETE http://www.example.com/goods
 
9、 使用链接关联相关资源
在返回响应结果时提供连接其余API的方法,使客户端很方便的获取相关联的信息。
10、 其余
服务器返回的数据格式,应该尽可能使用JSON


先后端分离的优势

 

1. pc/app/pad 多端适应
2. SPA开发模式的开始流行
3. 先后端开发职责不清
4. 前端一直配合后端,能力受限
5. 开发效率问题,先后端相互等待
6. 后台开发语言和模板高度耦合,致使开发语言依赖严重

 

先后端分离的缺点

1. 先后端学习门槛增长(前端要处理的数据变多了,后端传递数据要知足新的规范)2. 数据依赖致使文档重要性增长3. 前端工做量加大4. SEO的难度加大5. 后端开发模式迁移增长成本(以前依赖模板开发的项目)

相关文章
相关标签/搜索