首页 > 其他分享 >封装axios,一次封装终身受益!

封装axios,一次封装终身受益!

时间:2022-11-03 16:24:32浏览次数:54  
标签:errMessage case axios 封装 config break 终身 const data

 源码git地址:https://github.com/Sincenir/si-api

前言(为何做)

过去的一段时间,我都认为 接口请求 封装是前端的必修课。只要是写过生产环境前端代码的人,应该都脱离不了异步接口请求,那么 接口请求 的 封装 是必经之路。

直到前些天,我们屋某个美团写后台的小姑娘问我前端问题时。我才发现她们代码中的 接口请求 ,都是没有任何的封装,直接采用以下方式进行:

axios.post(`/api/xxxx/xxxx?xxx=${xxx}`, { ...data })
.then((result) => {
    if (result.errno) {
        ....
    } else {
        ....
    }
})
.catch((err) => {
    ....
})

这样写也不是说不好,在某种程度上,这增加了代码的可读性。
但是我们大多数页面需要的接口都不止一个,那么我们的组件中极有可能出现 数十上百 行重复代码。

那么随着请求的体量越来越大,我们的项目便越来越难以维护。

效果演示

const [e, r] = await api.getUserInfo(userid)
if (!e && r) this.userInfo = r.data.userinfo

上面是我们最终的实现效果。

接下来,我将带大家一步一步封装一套属于我们自己的 接口请求工具 ,同时也希望大家分享更好的思路。

注:

  • 如果你希望直接看源码,请翻到 《完整代码》
  • 这里以 axios 作示范,同样换成 fetch 、 小程序的 request 都是可以的
  • 我将会采用 typeScript 书写这段教程,如果你不需要,忽略掉对应的类型即可

思路清晰,先说分析(做什么)

在我们正式开发前,首先需要清楚请求一个接口都做了什么。

为此,消耗了两个小时时间,做了一个请求流程图,以便于我们后续进行需求分析(小声bb:Processon真难用

标签:errMessage,case,axios,封装,config,break,终身,const,data
From: https://www.cnblogs.com/stcx330/p/16854815.html

相关文章

  • PCB封装的丝印绘制与哪几层需要绘制边框
    1,丝印层的绘制  2.装配层的绘制,这里推荐比较便捷的操作,复制+Change,   这一步注意,装配层的Linewidth选择0,然后勾选   3,边界线的绘制,一般与丝印框一样......
  • golang封装http get函数请求并且携带header头信息
    有遇到这种需求,golang发送GET请求,携带header头信息,比如header里带着验证token封装函数如下://Get请求携带headerfuncGetWithHeader(urlstring,headersmap[string]st......
  • 驱动开发:内核封装TDI网络通信接口
    在上一篇文章《驱动开发:内核封装WSK网络通信接口》中,LyShark已经带大家看过了如何通过WSK接口实现套接字通信,但WSK实现的通信是内核与内核模块之间的,而如果需要内核与应用层......
  • C# HttpClient 封装
    usingSystem.Text;namespaceHTTPClientPacking{publicclassHttpClientHelper{privatestaticHttpClientHelper?_httpClientHelper=null;......
  • 驱动开发:内核封装TDI网络通信接口
    在上一篇文章《驱动开发:内核封装WSK网络通信接口》中,LyShark已经带大家看过了如何通过WSK接口实现套接字通信,但WSK实现的通信是内核与内核模块之间的,而如果需要内核与应用......
  • 驱动开发:内核封装WSK网络通信接口
    本章LyShark将带大家学习如何在内核中使用标准的Socket套接字通信接口,我们都知道Windows应用层下可直接调用WinSocket来实现网络通信,但在内核模式下应用层API接口无法使用,......
  • 在vue3+axios使用echarts的地图
    vue3+axios使用echarts的地图概述:在echarts的官网是直接提供的js代码和网上,如何在vue3中跑起来(各种跨域,各种报错让我想die)附加:之前一直跑不起来的很大原因是完全不清楚......
  • 兄弟组件传参_bus封装
    vue3Bus兄弟组件传参typeBusClass={emit:(name:string)=>voidon:(name:string,callBack:Function)=>void}typeParamsKey=string|number|sy......
  • Vue中Axios知识
    1.Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中2.特点从浏览器中创建XMLHttpRequests从node.js创建http请求支持PromiseAPI拦截请求和响应......
  • 【Android】Android开发之Activity的管理类,结束关闭指定的Activity,单例模式封装
    作者:程序员小冰,GitHub主页:​​https://github.com/QQ986945193​​​新浪微博:​​​http://weibo.com/mcxiaobing​​长期维护的Android项目,里面包括常用功能实现,以及知识......