Vue3引入axios封装接口的两种方法实例

下面我将详细讲解"Vue3引入axios封装接口的两种方法实例"这个话题。

1. 什么是axios

axios是一个基于Promise的HTTP框架, 可以用于浏览器和node.js,同时也是Vue.js官方推荐的第三方库之一,让前端开发人员可以轻松地向服务器发送 HTTP 请求以及以一种优雅的方式处理服务器端的响应。

2. 在Vue3中引入axios

下面介绍两种在Vue3中引入axios的方法:

2.1 第一种方法:封装axios

封装axios方法可以更好地管理请求的错误和响应,可以把axios的请求和响应拦截器统一写在一起。

import axios from 'axios';

const instance = axios.create({
  baseURL: 'http://your.api.url',
  timeout: 5000,
  headers: { 'Content-Type': 'application/json' },
});

// 请求发送前拦截
instance.interceptors.request.use(
  (config) => {
    // 加入自定义请求头、请求体等等
    config.headers.Authorization = 'Bearer ' + localStorage.getItem('token');
    return config;
  },
  (error) => Promise.reject(error)
);

// 响应后拦截
instance.interceptors.response.use(
  (response) => {
    const { data } = response;
    // 处理后端返回的非正常响应,如 token 失效等
    if (data.res === 0) {
      console.warn('token is invalid');
      localStorage.removeItem('token');
    }
    return response;
  },
  (error) => Promise.reject(error)
);

export default {
  get(url, params = {}) {
    return instance.get(url, { params });
  },
  post(url, data = {}) {
    return instance.post(url, data);
  },
  put(url, data = {}) {
    return instance.put(url, data);
  },
  delete(url, params = {}) {
    return instance.delete(url, { params });
  },
};

在Vue3的组件中使用:

<template>
  <p>{{users}}</p>
</template>

<script>
import axios from '@/utils/request';

export default {
  data() {
    return {
      users: [],
    };
  },
  mounted() {
    axios.get('/api/users')
      .then(res => {
        this.users = res.data;
      })
      .catch(err => {
        console.error(err);
      });
  },
};
</script>

2.2 第二种方法:在Vue3中集成axios

在Vue3可以全局注册axios方法,然后在组件中直接使用。

// main.js
import { createApp } from 'vue';
import App from './App.vue';
import axios from 'axios';

axios.defaults.baseURL = 'http://your.api.url';

const app = createApp(App);
app.config.globalProperties.$axios = axios;
app.mount('#app');

在Vue3的组件中使用:

<template>
  <p>{{users}}</p>
</template>

<script>
export default {
  data() {
    return {
      users: [],
    };
  },
  mounted() {
    this.$axios.get('/api/users')
      .then(res => {
        this.users = res.data;
      })
      .catch(err => {
        console.error(err);
      });
  },
};
</script>

总结

以上两种方法都可以实现在Vue3中引入axios请求,并且第一种方法还可以对请求和响应进行拦截处理,更好的管理请求和响应。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3引入axios封装接口的两种方法实例 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • keil怎么使用外部编辑器?使用vscode作为keil5的外部编辑器教程

    添加外部编辑器 打开Keil5软件,点击“Option for Target”,在弹出的选项卡中选择“Extensions”。 在“Tool”子选项卡内找到“External Editor”,在右侧“Command Line”中输入外部编辑器的文件路径及可执行文件名。 示例: 若想使用VSCode编辑器,将命令输入为 “C:\Program Files (x…

    other 2023年6月26日
    00
  • mstp配置实例

    以下是关于“MSTP配置实例”的完整攻略,包含两个示例说明。 MSTP配置实例 MSTP(Multiple Spanning Tree Protocol)是一种用于在网络中防止环的协议。在本攻略中,我们将介绍如何配置MSTP以及如何在网络中使用MSTP。 1. 配置MSTP 在配置MSTP之前,我们需要确保网络中的所有设备都支持MSTP。以下是一个示例: i…

    other 2023年5月9日
    00
  • 使命召唤战区闪退、卡机怎么办 Dev致命错误解决方法

    “使命召唤战区闪退、卡机怎么办 Dev致命错误解决方法”攻略 问题描述 在玩使命召唤战区时,可能会遇到闪退、卡机等问题,同时可能会出现Dev致命错误的提示。这些问题可能会影响到用户的游戏体验,因此需要及时解决。 解决方法 卡机问题 卡机问题通常是由于游戏占用过多的系统资源导致的。如果你的电脑配置较低,那么很容易遇到卡机问题。下面是一些解决方法: 降低游戏画质…

    other 2023年6月26日
    00
  • Android新建水平节点进度条示例

    Android新建水平节点进度条示例攻略 本攻略将详细讲解如何在Android应用中创建水平节点进度条,并提供两个示例说明。 步骤1:添加进度条到布局文件 首先,在你的布局文件中添加一个进度条控件。可以使用ProgressBar控件来实现水平节点进度条。以下是一个示例布局文件的代码: <ProgressBar android:id=\"@+i…

    other 2023年8月25日
    00
  • SonarQube安装、配置与使用教程图解

    SonarQube安装、配置与使用教程图解 介绍 SonarQube是一个非常流行的开源代码检测工具。它可以为开发者提供代码质量分析、漏洞检测、技术债务管理等功能。本文将介绍SonarQube的安装、配置与使用方法。 安装 Step 1: 在SonarQube官网上下载最新的稳定版本,解压到指定的目录下。 Step 2: 安装Java运行环境(JRE)。 配…

    other 2023年6月27日
    00
  • 仙剑6游戏停止响应解决方法介绍

    仙剑6游戏停止响应解决方法介绍 问题描述 在玩仙剑6游戏时,有时会出现游戏突然停止响应的问题,导致玩家无法正常游戏,需要手动关闭程序。这个问题非常影响游戏体验,那么该如何解决呢? 解决方法 方法一:升级显卡驱动 游戏停止响应的原因可能是由于显卡驱动版本过低造成的,更新显卡驱动可以解决这个问题。 具体步骤如下: 打开计算机的“设备管理器”(可以在“控制面板”中…

    other 2023年6月27日
    00
  • 后缀名为.bak是什么文件格式,该如何打开

    后缀名为.bak的文件是备份文件,通常用于存储原始文件的副本。这种文件格式不是特定的文件类型,而是一种常见的命名约定。.bak表示\”backup\”(备份)的缩写。 要打开.bak文件,你需要知道原始文件的类型。因为.bak文件只是原始文件的备份,所以你需要找到与之对应的原始文件,并使用适当的应用程序打开它。 以下是两个示例说明: 示例一:打开.bak的数…

    other 2023年8月5日
    00
  • Java中的重要核心知识点之继承详解

    Java中的重要核心知识点之继承详解 1. 继承的概念 继承是面向对象编程的一种重要机制,Java支持继承的特性。继承是指子类(派生类)从父类(基类)中获取属性和方法的过程。子类继承了父类的属性和方法,同时还可以根据需要扩展和改变父类中的方法的实现,从而实现代码的复用和优化。 Java中的继承关系是形成了一棵树形结构,利用继承可以方便地组织类之间的关系,形成…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部