vue中axios的封装请求怎么实现


这篇“vue中axios的封装请求怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue中axios的封装请求怎么实现”文章吧。 axios 是一个轻量的HTTP客户端,它基于 XMLHttpRequest 服务来执行 HTTP 请求,支持丰富的配置,支持 Promise,支持浏览器端和 Node.js 端。自Vue2.0起,尤大大宣布取消对vue-resource 的官方推荐,转而推荐 axios。现在 axios 已经成为大部分 Vue 开发者的首选。( 如果你还不熟悉 axios,可以在这里查看它的API。)封装前,先来看下,不封装的情况下,一个实际项目中axios请求的样子。大概是长这样:可以看到在这段代码中,页面代码逻辑只在第15行处,上方的一大块请求配置代码和下方一大块响应错误处理代码,几乎跟页面功能没有关系,而且每个请求中这些内容都差不多,甚至有的部分完全一样。1.封装步骤封装的本质就是在待封装的内容外面添加各种东西,然后把它们作为免费云主机域名一个新的整体呈现给使用者,以达到扩展和易用的目的。封装 axios 要做的事情,就是把所有HTTP请求共用的配置,事先都在axios上配置好,预留好必要的参数和接口,然后把它作为新的axios返回。目录结构如下(由Vue-cli 3.0 生成):|–public/
|–mock/
| |–db.json # 我新建的接口模拟数据
|–src/
| |–assets/
| |–components/
| |–router/
| |–store/
| |–views/
| |–Home.Vue
| |–App.vue
| |–main.js
| |–theme.styl
|–package.json
|…2.封装目标在 Home 页,发起 axios 请求时就像调用一个只有少量参数的方法一样简单,这样我就可以专注业务代码了。1. 将 axios 封装到一个独立的文件在src下创建 utils/http.js 文件引入 axios创建一个类给不同环境配置不同请求地址根据process.env.NODE_ENV 配置不同的 baseURL,使项目只需执行相应打包命令,就可以在不同环境中自动切换请求主机地址。配置超时时间timeout属性,我一般设置10秒。配置允许携带凭证widthCredentials属性设为true给这个类创建实例上的方法request在 request 方法里,创建新的axios实例,接收请求配置参数,处理参数,添加配置,返回axios实例的请求结果(一个promise对象)。你也可以不创建,直接使用默认导出的axios实例,然后把所有配置都放到它上面,不过这样一来整个项目就会共用一个axios实例。虽然大部分项目下这样够用没问题,但是有的项目中不同服务地址的请求和响应结构可能完全不同,这个时候共用一个实例就没办法支持了。所以为了封装可以更通用,更具灵活性,我会使用axioscreate方法,使每次发请求都是新的axios实例。因为拦截器配置内容比较多,所以封装成一个内部函数了。配置请求拦截器在发送请求前对请求参数做的所有修改都在这里统一配置。比如统一添加token凭证、统一设置语言、统一设置内容类型、指定数据格式等等。做完后记得返回这个配置,否则整个请求不会进行。我这里就配置一个token。配置响应拦截器在请求的thencatch处理前对响应数据进行一轮预先处理。比如过滤响应数据,更多的,是在这里对各种响应错误码进行统一错误处理,还有断网处理等等。我这里就判断一下403和断网。另外,在拦截器里,还适合放置loading等缓冲效果:在请求拦截器里显示loading,在响应拦截器里移除loading。这样所有请求就都有了一个统一的loading效果。默认导出新的实例最后完整的代码如下:现在 axios 封装算是完成了80%。我们还需要再进一步把axios和接口结合再封装一层,才能达到我在一开始定的封装目标。3. 使用新的 axios 封装API在 src 目录下新建 api 文件夹。把所有涉及HTTP请求的接口统一集中到这个目录来管理。新建 home.js。我们需要把接口根据一定规则分好类,一类接口对应一个js文件。这个分类可以是按页面来划分,或者按模块等等。为了演示更直观,我这里就按页面来划分了。实际根据自己的需求来定。使用新的 axios 封装API(固定url的值,合并用户传过来的参数),然后命名导出这些函数。在 api 目录下新建 index.js,把其他文件的接口都在这个文件里汇总导出。这层封装将我们的新的axios封装到了更简洁更语义化的接口方法中。现在我们的目录结构长这样:|–public/
|–mock/
| |–db.json # 接口模拟数据
|–src/
| |–api/ # 所有的接口都集中在这个目录下
| |–home.js # Home页面里涉及到的接口封装在这里
| |–index.js # 项目中所有接口调用的入口
| |–assets/
| |–components/
| |–router/
| |–store/
| |–utils/
| |–http.js # axios封装在这里
| |–views/
| |–Home.Vue
| |–App.vue
| |–main.js
| |–theme.styl
|–package.json
|…4.使用封装后的axios现在我们要发HTTP请求时,只需引入 api 下的 index.js 文件就可以调用任何接口了,并且用的是封装后的 axios。axios请求被封装在fetchData函数里,页面请求压根不需要出现任何axios API,悄无声息地发起请求获取响应,就像在调用一个简单的 Promise 函数一样轻松。并且在页面中只需专注处理业务功能,不用被其他事物干扰。以上就是关于“vue中axios的封装请求怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。

相关推荐: Flutter如何实现底部和顶部导航栏

这篇文章主要讲解了“Flutter如何实现底部和顶部导航栏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着免费云主机域名小编的思路慢慢深入,一起来研究和学习“Flutter如何实现底部和顶部导航栏”吧!带文字图标的底部导航栏(使用BottomNavi…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/27 21:54
下一篇 03/27 21:55

相关推荐