谈谈前端对接口的要求,以及它会带来的好处

什么是协议:

所谓的协议就是指大家都认同的一个标准规范,并且大家都承诺严格按照标准细节来执行。

 

前后端开发的协议:

站在一个前端的角度,我是这么来看待一个接口应该具有的细节的

1. 请求的方式

  1.1 尽量参考RESTFUL的方式来设计,如读取(GET),新建(POST),修改(PUT),删除(DELETE),通过HTTP本身的含义来减少参数的传递

  1.2 尤其要注明不同模块应该要有同一个风格的的请求方式,例如用GET来读取数据那么所有的读取操作都应该是GET

 

2. 请求的参数:

  2.1 参数的传递命名要统一,如分页时的结构为{pageNo,pageSize, query}

  2.2 每个不同的模块,请求参数的风格要保持一致

 

3. 接口的状态:成功、失败

  3.1 状态的描述应该尽量简单

  3.2 如果有额外的内容,应该要有一个定义好的状态码,并可以根据状态进行异常的细节说明。

  3.3 通常情况下要求后端不能返回500异常

 

4. 接口的响应:

  4.1 相同的操作类型,响应的数据结构要一致,如摘取列表的结果都为{total, items}

  4.2 数据的控制参数(如分页数据,条目计数等,是否只读)  

 

前端更关注的细节:

  1. http 响应异常

    1.1 这类型的异常通常是不可以预知的

    1.2 把常见的异常码进行处理,如401,404,408,504等等

    1.3 在http模块把这个内容进行同化并向后传递,让后面的代码可以无差别处理这部分异常  

    1.4 通过navigator.connection.onchange来监听网络的变化,优化网络异常体验

  2. 超时的处理

  通过我们通过OAuth的方式进行鉴权,在一定的时间后超时是肯定的,但怎么样可以给到用户一个更好的体验

    2.1 把TOKEN的超时节点记录在localstorage中,每次进入系统就去查看是否需要刷新TOKEN

    2.2 与后端商定使用refreshToken来更新TOKEN,当TOKEN超时后,拦截当前的所有请求,并同时请求新的TOEKN和refreshToken,在完成刷新TOKEN再执行被拦截的请求

 

通过框架来对接协议:

 在前后端协议能够被很好地执行后,我们便可以通过框架的方式把相关的细节封装起来

1. 封装请求工具:主要包括URL处理、参数处理、服务端异常及HTTP异常处理、异常说明、回调数据预加工

2. API层封装:

  2.1 返回数据的加工,使之适合状态层消费。

  2.2 标准化数据输出:每个API的接口出来的结构要统一,如{succes, message, data}

  2.3 建议通过ts来开发API支,使用interface来约束每个API接口的结果,把常用的操作直接封装在上级class中

  2.2 请求防抖处理

结语:

好的接口定义可以直接降低前端很大一部分的工作量,实际开发中有很多操作可以直接通过上级类封装好,并且代码也更容易稳定下来。

版权声明:本文为bowen-liang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bowen-liang/p/api_def.html