封装 axios GET请求【Vue小技巧】

作者: 前端小野2分类: 野生技能协会 发布时间: 2021-05-18 09:00:15 浏览:31428 次

封装 axios GET请求【Vue小技巧】

xxxx时光xxxx:
看见某开源的后台管理项目的源码就是这样写的,个人感觉多此一举,并没有直接定义常量方便

乱世卧龙:
这是个非常错误的封装思路,只要前端出现了额外的路由名称定义,就是徒增额外的工作开销和沟通成本。文件中存在若干孤岛常量的行为也是禁止的,必须在配置文件中以对象的方式表示。

【回复】回复 @new一个bug :是的,分散的常量很容易出问题。因为你后续找它或者别人找它的时候,只能通过看源码或者搜索的方式,不存在“具体位置”这个概念,而一旦集中处理,相当于给常量添加了一个用于查找的路径,比如都在xx文件夹下的constant.js文件中定义。当你需要批量修改的时候,是极为方便的。
【回复】回复 @new一个bug :个人的处理方式是:写个路由构建器, 使最终路由 = 无参路由 + 参数,不需要为了传一个参数就额外包一层,类似于 send(basicUrl, params= {})形式的一个函数,这个函数负责把params或用&拼接(get请求)或用json对象(post请求),或用/A/B/C的形式拼接(restful格式请求)到bsicUrl之后。 额外的路由名称是指视频中给实际向后台发送的地址起了个别名,这种应该把别名当做key,地址当做value,放到一个json文件中。 综上,send函数的签名为 send(urlAlias, params={}),先根据别名从json文件中找到真正的basicUrl,然后根据发送请求类型以及是否restful格式,拼接合并成真正的url。这些动作就是路由构建器的任务。
【回复】请教一下,额外的路由名称是指其他路径的请求吗?我的理解是按需封装的呀,如果有复用需求,且有一个入参不同,柯里化确实可以节省一个参数的重复书写啊,如果是换路径,那当然是需要重新传参的,但是无需入参的接口当然不需要柯里化封装啊?
Ynozo:
建议配合openapi/swagger自动生成前端api代码,这种模板代码没必要手写

写不出代码惹:
求一期axios请求的post封装!up主太牛了!

稍等一分钟:
在文件 utils/index.js 封装const request = axios.create({baseURL: 'http:/192.168.0.3:8080/api/', timeout: 5000}) export default request; 再在在文件api/blog.js 里引入request写 export function getBlogList(args){ return request({method:'get', url: 'blog/list'+args}) }

【回复】成功和失败的处理一般都是放在对应的组件上。也可以用axios提供的拦截函数,如发送前或返回后做统一的处理
【回复】回复 @模考行测上70 : 可以用吧 up还是用的promise
【回复】我想问一下,现在封装请求函数为什么没有await和async了
ー条死魚:
为啥参数是{id},axios不是要{ params: { ID: 12345 } }么

1-jewel:
我一般都是在定义常量PART_PATH,然后手动拼接url

程风蓝:
这是大厂的写法么,很一般的大众写法不一样,稍微有点繁琐

【回复】肯定不是这样写的 太笨了 当发生错误了 后端肯定直接报错 假如后端都返回200 并且错误信息在响应体里才能这样写 比如401 500 这样的错误 他这个根本捕获不到错误 而且axios 应该要创建实例使用才是好习惯
【回复】回复 @想娶狐狸的书生 :真的么
ro8576:
[热词系列_两面包夹芝士][热词系列_两面包夹芝士]

前端_小新:
哈默老师,为什么不用axios.create来封装呢

Mr灬1900:
6分33秒 network里的response里是如何自动格式化的?

【回复】回复 @哈默聊前端 :什么插件啊哈默?我试了几个插件好像不起作用
【回复】应该是我浏览器里装的插件做的~
sheepdeerone:
听君一席话,白读十年书,这种思路也只有刚入门的才会这样吧

new一个bug:
学习了!科里化确实是个有用的封装技巧,学过,但是项目中仍然很少用到,原因还是对其掌握不熟。up视频讲解很细[点赞]我的主页最近有侧边栏组件封装的手写视频,虽然没有up的细致讲解,不过后面会陆续增加一些代码细节,我们一起进步[给心心]

69937020935_bili:
我们公司的项目一个前端就是这么写的,我也是照着他写的,所有的请求全部写在request.js里再调用

【回复】嗯嗯,这样更利于维护~
【回复】不是不是,视频里,request.js是封装了个get函数,和业务相关的代码是写在index.js文件里的,以后有其他业务,要新建其他文件写在里面,而不是什么都写在request.js里

知识分享官 编程 WEB 前端 JS JAVASCRIPT 经验分享 VUE WEB前端 打卡挑战

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!