美文网首页
axios请求的封装

axios请求的封装

作者: IT_cool | 来源:发表于2019-10-24 11:46 被阅读0次

    经过这段时间vue项目的积累, 总结一下自己对axios请求的封装, 我们可以通过以下点来拆分:
    1.请求的url
    2.请求的方式
    3.请求的参数
    4.请求拦截器
    5.响应拦截器
    6.调用方式

    请求的url

    假设url为http://10.0..:8080/test/task/32682?appCode=001&userId=test, 我们可以把url拆分为

    • 基础路径baseURL=http://10.0..:8080
      我们可以把baseURL的值存到全局配置config文件中, 然后通过webpack
      ProvidePlugin添加到全局变量 config中, 这样我们就可以通过config.baseURL
      获取baseURL
      WeChat44c47fe85238878d09bcbd8412a4d197.png
    屏幕快照 2019-10-24 上午10.24.52.png
    • 业务路径path=/test/task/{taskId}
      对于业务路径我们可以定义一个path.js文件, 统一管理这些路径,如下图:

      WechatIMG433.jpeg

      另外 path中{taskId}, 这里给大家解释下, 后台按照restful api设计的时
      候, 会把针对某个实体的操作, 此实体的id拼接在path上, 所以我们需要动态的把
      {taskId}替换为32682, 代码见下个步骤

    • url请求参数appCode=001&userId=test
      最后我们需要把请求的参数拼接到url上, 这里强调下把参数拼接到url上, 并不仅
      仅是get请求方式, 而是get请求方式只能放到url上, 一般来说其他请求方式在url
      请求上拼接参数, 这类参数基本上是一些业务系统每个接口都需要的一些信息,
      我们通过util中封装的方法统一处理url如下:

      屏幕快照 2019-10-24 上午10.36.59.png
    • 请求方式
      axios为我们提供了get/delete/head/post/put/patch等


      屏幕快照 2019-10-24 上午11.09.37.png
    • 请求拦截器
      我们在发出请求时, 可以对请求进行一些处理, 比如说我们移动端的token添加
      request header, 以及在发出请求时的出错

      屏幕快照 2019-10-24 上午10.49.34.png
    • 响应拦截器
      我们在收到响应时, 可以统一对响应成功和失败,进行一些处理, 不同系统后台处
      理可能会不一样, 比如id不能为空, 在不同系统可能有如下2种:

      1. 返回200状态码, 在responseData中, 再通过某个字段来区分成功或失败, 失败
        的话, 再专门进行失败处理
      2. 返回400状态码, 400状态码一般代表, 客户端传递参数有问题, 导致后台出错,
        这时, 后台一般会自定义一些异常类去捕获, 异常类一般有2个属性, code和
        message, 后台定义的code在接下来我们前端处理codeMessage对象中, 要保持
        一致, 而codeMessage中的message不一定需要与后台异常类中message保持一
        致, 因为后台的message一般是英文提示, 此提示直接展示给用户不够友好, 所以
        我们前端可以翻译或者自定义message


        屏幕快照 2019-10-24 上午11.00.25.png
    屏幕快照 2019-10-24 上午11.00.00.png
    • axios请求构造


      屏幕快照 2019-10-24 上午11.12.32.png
    • 业务模块具体调用请求
      我们可以进行一下抽象, control -> service -> http请求

    1. control我们可以理解为业务组件调用层, 构造请求参数
    2. service我们可以理解为业务模块服务层, 我们在这里可以对请求参数处理, 以及url处理, 此处我们可以按照业务场景分模块
      比如: moduleA下的请求集中一起, moduleB下的请求集中一起
    3. http请求即为我们导出的axios对象, 此对象提供了我们进行http请求的基础实现


      屏幕快照 2019-10-24 上午11.24.31.png
      屏幕快照 2019-10-24 上午11.28.06.png

    至此, 完成对axios请求的封装, 欢迎提问, 一起进步!

    相关文章

      网友评论

          本文标题:axios请求的封装

          本文链接:https://www.haomeiwen.com/subject/gmhrvctx.html