首页 > 其他分享 >《Vue3笔记》第05节:Vue3项目引入Axios插件实现网络通信

《Vue3笔记》第05节:Vue3项目引入Axios插件实现网络通信

时间:2024-12-17 12:32:36浏览次数:10  
标签:插件 axios Vue3 Axios api error message data

这篇文章基于前一个小节的代码基础之上,介绍如何在Vue3项目中引入Axios插件实现网络通信的功能。

Vue3项目开发(微信文章集合)

1.1、安装依赖

Axios是一款实现网络通信的插件,在前后的分离的项目中,要和后端接口进行数据通信,就可以采用Axios这个插件。首先安装Axios插件所需要的依赖:

# 安装 Axios
yarn add axios

# 安装 Axios
npm install axios

# 安装 Axios
cnpm install axios

执行成功,就可以在package.json文件中,查看到相应的依赖和版本信息。
在这里插入图片描述

1.2、新建request.js文件

为了方便使用axios插件,一般在实际开发过程中,都会统一定义一个request.js文件,自定义封装axios请求的工具类。在src目录下,创建一个util目录,在该目录中新建一个request.js文件,代码如下所示:

import axios from 'axios';
import {ElMessage} from 'element-plus';

/**
 * 创建 axios 实例对象
 * <p>
 *     配置请求的根路径,超时时间,请求头等参数
 * </p>
 */
const $axios = axios.create({
    baseURL: '', // 设置后端接口的服务地址
    timeout: 3000, // 设置超时时间
    headers: {
        'Content-Type': 'application/json;charset=UTF-8'
    }
});

/**
 * 请求拦截器
 * <p>
 *     每次请求都会执行拦截器,可以在请求头中添加 token 等参数
 * </p>
 */
$axios.interceptors.request.use(
    config => {
        // 可以在这里添加请求头,例如添加 token 等
        console.log('请求拦截参数:', config);
        return config;
    },
    error => {
        console.log('请求拦截器', error)
        return Promise.reject(error);
    }
);

/**
 * 响应拦截器
 * <p>
 *     响应拦截器,接口返回数据之后,会执行响应拦截器
 *     可以根据接口返回的数据,做相应的处理,例如:成功、失败、未登录、无权限等
 * </p>
 */
$axios.interceptors.response.use(
    response => {
        console.log('响应拦截器', response)
        const {code, message} = response.data;
        if (code === 200) {
            // 成功的处理逻辑
            return response.data;
        } else if (code === 401) {
            // 无权限的处理逻辑
            ElMessage.error('您无权进行此操作!');
            return Promise.reject(response.data);
        } else if (code === 403) {
            // 未登录的处理逻辑
            ElMessage.error('您尚未登录,请先登录!');
            return Promise.reject(response.data);
        } else {
            // 其他错误的处理逻辑
            ElMessage.error(message);
            return Promise.reject(response.data);
        }
    },
    error => {
        console.log('响应拦截器error:', error)
        // 统一的错误提示
        if (error === 'Cancel') {
            return Promise.reject(error);
        }
        let {message} = error;
        if (message === 'Network Error') {
            message = '网络连接异常!';
        } else if (message?.includes('timeout')) {
            message = '请求超时,请联系管理员!';
        } else if (message?.includes('Request failed with status code')) {
            message = '未知异常,请联系管理员!';
        }
        ElMessage.error(message);
        // 对响应错误做一些统一的处理
        return Promise.reject(error);
    }
);

// 导出axios实例对象
export default $axios;

1.3、配置服务代理

前后端分离的模式下,Vue3项目要想访问后端接口,必须配置一下服务代理,这样才可以正确访问到后端接口。打开vite.config.js配置文件,在里面找到server节点,在该节点之后,添加proxy代理配置,如下所示:

server: {
    port: 3500,
    host: '0.0.0.0',
    // 启动服务时自动打开浏览器
    open: true,
    proxy: {
        // 配置代理,针对所有 /api 开头的请求,都将转发到 http://127.0.0.1:8080/api-v2 服务器
        '/api': {
            // 后端服务地址
            target: 'http://127.0.0.1:8080/api-v2',
            // 允许跨域,后端也需要同步设置跨域
            changeOrigin: true,
            // 路径重写,所有以 /api 开头的请求,其中 /api 部分都将被替换为空字符串
            // 举个例子:请求 /api/user 将会被代理到 http://127.0.0.1:8080/api-v2/user
            rewrite: (path) => path.replace(/^\/api/, '')
        }
    }
},

完整配置,如下图所示:

在这里插入图片描述

添加上面配置之后,针对跨域的问题,还需要后端进行相应的配置。例如:SpringBoot中可以使用CORS跨域配置,只要允许跨域就可以解决前后端跨域无法访问的问题了。

1.4、使用工具类

工具类代码编写完成之后,就可以在需要使用的地方引入这个工具类,但是,实际开发中,一般不会直接使用request.js文件,而是会在src目录下面,创建一个api目录,然后将所有的接口都定义在api目录下面。

例如:我这里在src目录下面创建一个api目录,然后新增一个DemoApi.js文件,并且定义相应的后端接口,如下图所示:

在这里插入图片描述

之后就可以在需要调用接口的Vue组件里面,直接引入DemoApi.js文件中对应的接口方法,完成数据的获取了。

<script setup>
import {getData} from "../api/DemoApi.js";
import {onMounted, ref} from "vue";

const data = ref(null);
onMounted(() => {
  getData().then(res => {
    console.log(res)
    data.value = res.data;
  }).catch(err => {
    console.log(err)
  });
});
</script>

<template>
  <div>
    响应数据:
    {{ data }}
  </div>
</template>

<style scoped>

</style>

打开浏览器,访问上面组件代码,就可以查看到接口数据了,如下所示:

在这里插入图片描述

1.5、获取源代码

源代码地址:

https://gitcode.com/knowledge-base/vue-element-plus-components/tree/vue3-chapter-05

到此,Vue3项目中引入Axios插件实现网络通信就介绍完了。

标签:插件,axios,Vue3,Axios,api,error,message,data
From: https://blog.csdn.net/qq_39826207/article/details/144492327

相关文章

  • jquery目录树插件
    file-explore是一款简单的jquery目录树插件。它使用嵌套的无序列表作为目录树的结构,结合font-awesome图标可以制作出非常漂亮的jquery目录树效果。 在线预览 下载 使用方法在页面中引入file-explore.css和font-awesome文件,以及jquery和file-explore.js文件。<lin......
  • 轻松绕过网站复制限制,Stylus插件让复制更自由!
    有时候,我们浏览网页时可能会遇到一些网站禁止复制,甚至禁止选中文字的情况,这让我们在需要复制内容时非常不方便。不过,别担心!今天我要为大家推荐一个超级实用的小工具——Stylus插件,它能让你轻松定制网页的复制体验,解决这些烦恼。Stylus插件介绍Stylus是一款浏览器插件,可以......
  • Vue2 应用开发必备技能:构建优雅的 Axios 请求封装模块
    Vue2应用开发必备技能:构建优雅的Axios请求封装模块前言第一步:安装Axios第二步:创建Axios封装模块1.引入Axios2.创建Axios实例3.请求拦截器4.响应拦截器5.导出封装的实例第三步:封装具体接口请求第四步:在Vue组件中使用总结前言在Vue2项目中,数据请......
  • Bootstrap多级下拉菜单插件
    bootstrap-submenu是一款在原生bootstrapDropdowns组件的基础上进行扩展,可以生成多级子菜单的多级下拉菜单插件。原生的bootstrap下拉菜单只有一层,通过bootstrap-submenu插件,可以生成多级子菜单。在线预览下载 安装可以通过npm和bower来安装bootstrap-submenu插件。$np......
  • k8s阶段08 k8s扩展(kubectl插件), 调度器(亲和调度, 污点和容忍度调度), 集群日常管理
    Kubernetes扩展机制扩展Kubernetes1.kubectl插件2.APIServer扩展身份认证、鉴权和动态准入控制相关插件3.API扩展,以支持更多的资源类型4.调度器扩展以支持更多调度算法5.控制器扩展以支持更多的Controller或Operator6.网络插件,扩展Kubelet以配置Pod网络7.设备插件,扩展......
  • vue3/elementplus表格顶部固定高度计算
    1.表格标签<el-table:data="costList"border:height="tableHeight">2.具体实现consttableHeight=ref(500);constsettingsStore=useSettingsStore();//此方法精确计算表格高度,固定表格顶部用constcalculateTableHeight=()=>{constwindowH......
  • IDA插件
    IDA插件trace_Nativeandstalker_trace_so这俩插件都是对于Native层也就是对于so的trace,其中的源码的意思都差不多,这里是对应于俩插件在相同层次上不同的实现stalker_trace_so:trace中的function函数的地址获取:通过UI界面,判断鼠标选择的区域来判定所需要进行的trace跟踪的范......
  • ecahrts双向渐变进度条从宽到窄【vue3】
    效果如图:父组件1.html代码<!--进度条组件--><ProgressBarclass="progress-bar"idEcharts="progress-bar-chart":chartsData="progressBarChartData"></ProgressBar>2.js代码//引入组件importProgressBarfrom......
  • 20种炫酷打开模态窗口动画特效插件xdialog
    xdialog是一款炫酷打开模态窗口动画特效插件。该插件提供20种打开模态窗口的动画特效,并提供丰富的配置参数和api来控制模态窗口,非常实用。 在线演示下载  使用方法在页面中引入xdialog.css和xdialog.js文件。<linkrel="stylesheet"href="xdialog/xdialog.css"......
  • bootstrap4标签输入框插件
    这是一款基于Bootstrap4的标签输入框插件。该插件使用Bootstrap4badge组件来制作标签输入和移除的效果。 在线演示 下载  使用方法在页面中引入下面的文件。<linkhref="bootstrap.min.css"rel="stylesheet"type="text/css"/><linkhref="jquery-tagsinp......