不再自卑,ts封装axios最佳实践免费送
简介
🤔看了一圈,大家对 ts
封装 axios
都各有见解。但都不是我满意的吧,所以自己封装了一个💪。至于为什么敢叫最佳实践,因为我满意,就这么简单粗暴🏋🏻。
什么样封装才是最合理的
-
别再用 promise
包了,好吗?
看了一下,很多人封装 axios
的时候都用 promise
包装了一层,甚至更有甚者用起了 try catch
。为什么反对用 promise
包装,因为 axios
返回的就是个 promise
,脱裤子放屁,完全没必要🧔♀️。至于 try catch
这个是用于捕获未知错误的,比如 JSON.parse
的时候,有些字符串就是无法转换。记住一句话,滥用 try catch
和随地大小便没有区别。
-
一个 request
方法梭哈,噗!我一口老血🥵
部分人直接就一个 request
方法梭哈,所有参数与配置都写在一起,看起来一点也不清晰,简洁。请求有多种方式,get
,post
,put...
,最合理的请求方式应该是 instance[method](url, data, options)
。对应 请求地址、请求参数、请求配置项,一目了然。
-
扩展我需要的请求,不要再 ts-ignore
了🤬
如果 ts-ignore
用多了,就会产生依赖性。不排除情况紧急急着上线,或者 类型处理 复杂的,但是在有时间的时候,还是得优化一下,作为程序员,追求优雅,永不过时。
-
求你了!把拦截器拿出来吧😠
封装的时候我们都会封装一个请求类,但对应拦截器应该解耦出来。因为每个域名的拦截器处理可能不一致,写死的话封装请求类的意义也就没有了。
-
接口请求 then
里面又判断后端返回码判断请求是否成功,太狗血了!😞
🧑🏫看到下面这种代码,给我难受的啊。
既然是一个 promise
,我们就应该知道 promise
只有成功或者失败。then
怎么会有成功错误的处理呢?then
里面就是请求成功,没有什么 if else
,处理失败去 catch
里面处理去。这么喜欢写 if else
,你是没写过单元测试是吧?
开整
OK
,吐槽了这么多,这时候肯定就有人说了,光说谁不会啊,你整一个啊!🤐
瞧你这话说的,一点活没干,还让你白嫖了。你咋这么能呢🙄?
不过话说回来,我不要活在他人的评价里,我做这件事情不是因为你的讽刺或者吹捧,而是我自己要做🧑🦱。
接下来定一下要做的事情
- 封装一个请求类
- 适当扩展
axios
类型,为自定义配置打地基
- 支持自定义请求配置。如是否全局错误提示
- 拦截器单独拎出来,方便扩展新的请求
开整之前先看看 axios 基本类型
Talk is cheap,show me the code.
代码也不多,就也不多解释了,基本注释都加上了。下面是全部代码。
以及使用的 demo
。这个保姆级服务满意吗?
可以看到鼠标浮上去就能看到定义了,完美!