当前位置:首页 > 编程技术 > 正文内容

Vue 网络请求模块封装 (axios)

yc8882年前 (2022-12-21)编程技术440

Vue 网络请求模块封装 (axios)

1. vue 中如何发送网络请求 ?


选择一: XMLHttpRequest (XHR)

这种方式配置和调用方式都非常混乱,编码也很复杂,所以真实开发中都不会使用 XHR 这种方式

选择二: jQuery-Ajax

如果项目中使用了的 jquery,那么我们一般都会使用 jquery 自带的 ajax 封装,也就是 $.ajax({})

但是,要明确一点,在 vue 整个开发中都是不需要使用 jQuery 了,如果在 vue 中还要使用 $.ajax 则使用引入 jquery。jquery 的代码达到 1w+ 行,vue 代码才 1w+ 行,完全没有必要为了网络请求引用这个重量级框架

选择三: axios

在 Vue1.x 的时候,Vue 官方推出了 vue-resource,它的体积相对于 jquery 小了很多,在 Vue2.x 推出后,去掉了 vue-resource,并且 vue 作者尤雨溪推荐使用 axios

2. 在 vue 脚手架中使用 axios


axios 中文文档: http://www.axios-js.com

安装 axios 包

  1. npm install axios

在 main.js 中导入 axios

  1. import axios from 'axios';

3. 请求配置


当 url 不是一个绝对 URL 时,baseURL 才会自动加在 url 前面

序号 参数 描述
1 url 接口地址
2 baseURL 接口根路径
3 method 请求类型,不区分大小写
4 params URL 查询对象
5 data 请求体数据,存放 POST 数据的地方
6 headers 请求头
7 timeout 超时时间,单位: 毫秒,请求超过时间时请求将被中断 (0 代表 不超时)

常用请求配置参数

  1. axios({
  2. url: "/goods/getLists",
  3. method: "post",
  4. baseURL: "http://shop.cy",
  5. params: {
  6. id: 10
  7. },
  8. data: {
  9. name: 'liang'
  10. },
  11. headers: {
  12. token: "abcdef"
  13. },
  14. timeout: 5000
  15. })

4. 配置默认值


全局的 axios 默认值

  1. axios.defaults.baseURL = 'https://api.example.com';
  2. axios.defaults.timeout = 5000;

自定义实例默认值

当前接口地址是多个域名时,定义全局配置默认值显然是不合适的,因为接口前缀不同,此时可以定义多个 axios 实例

  1. // 创建 axios 实例
  2. const instance = axios.create({
  3. baseURL: "http://shop.cy",
  4. timeout: 500
  5. })
  6. // 发送网络请求
  7. instance(config).then(res => {
  8. console.log('res', res)
  9. })

5. 网络请求模块封装


创建文件: src/network/request.js

  1. import axios from 'axios';
  2. export default (config) => {
  3. // 创建 axios 实例
  4. const instance = axios.create({
  5. baseURL: "http://shop.cy",
  6. timeout: 1
  7. })
  8. // 响应拦截器
  9. instance.interceptors.response.use(response => {
  10. // 响应成功
  11. return response.data; // 返回接口数据
  12. }, error => {
  13. // 响应错误
  14. return Promise.reject(error);
  15. });
  16. return instance(config)
  17. };

使用示例

  1. request({
  2. url: '/test/req',
  3. params: {
  4. id: 200
  5. }
  6. }).then(res => {
  7. console.log('res', res)
  8. }).catch(err => {
  9. console.log('err', err)
  10. })

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10256.html

标签: TypeScript
分享给朋友:

“Vue 网络请求模块封装 (axios)” 的相关文章

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】vagrant实现linux虚拟机的安装并配置网络

【说站】vagrant实现linux虚拟机的安装并配置网络

一、VirtualBox的下载和安装1、下载VirtualBox官网下载:https://www.virtualbox.org/wiki/Downloads我的电脑是Windows的,所以下载Wind...