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日

相关文章

  • 晨枫u盘启动工具安装原版Win7的两种方法(32位64位系统通用)

    晨枫U盘启动工具安装原版Win7的两种方法(32位/64位系统通用) 方法一:使用晨枫U盘启动工具制作启动盘 首先,确保你已经下载了晨枫U盘启动工具,并将其安装到你的电脑上。 插入一个空白的U盘到你的电脑上。 打开晨枫U盘启动工具,并按照以下步骤进行操作: 在主界面上,选择你的U盘所在的盘符。 在“启动模式”下拉菜单中,选择“Windows 7”。 在“镜像…

    other 2023年7月28日
    00
  • Python数据结构之优先级队列queue用法详解

    Python数据结构之优先级队列queue用法详解 什么是优先级队列? 优先级队列是一种特殊的队列,它的每个元素都有一个与之关联的优先级。当元素加入队列时,会根据优先级进行排序,优先级最高的元素会排在队列的前面。当需要取出元素时,会先取出优先级最高的元素。 Python中的优先级队列模块queue Python的标准库中提供了一个优先级队列模块queue,该…

    other 2023年6月28日
    00
  • vite与xcode环境变量配置记录详解

    Vite与Xcode环境变量配置记录详解 介绍 Vite是一个基于ES module的前端构建工具,开发者可以使用Vite来开发Vue.js应用或普通的HTML/CSS/JavaScript应用。 Xcode是苹果公司推出的开发iOS应用的集成开发环境。 在使用Vite和Xcode开发应用的过程中,有时需要进行一些环境变量的配置,本文将详细介绍这方面的内容。…

    other 2023年6月27日
    00
  • php递归函数三种实现方法及如何实现数字累加

    关于php递归函数的三种实现方法以及如何实现数字累加,我来详细解释一下。 PHP递归函数 递归函数是指在函数执行的过程中,调用函数本身的过程。递归函数可以帮助我们在处理树形结构、遍历多维数组、计算嵌套的结构等问题时,非常方便。 在PHP中,递归函数的实现方法有以下三种: 1. 直接使用 function 关键字 function recursion($par…

    other 2023年6月27日
    00
  • MYSQL使用正则表达式过滤数据

    MYSQL使用正则表达式过滤数据攻略 1. 问题描述 在MYSQL中,我们经常需要根据特定的模式或规则来过滤数据。正则表达式是一种强大的工具,可以帮助我们实现灵活的数据过滤。 2. 解决方法 为了使用正则表达式过滤数据,可以采取以下方法: 方法1:使用REGEXP关键字 使用REGEXP关键字可以在WHERE子句中使用正则表达式进行数据过滤。以下是一个示例:…

    other 2023年10月18日
    00
  • Jquery中dialog属性小记

    Jquery中dialog属性小记 在Web开发中,弹出框是非常常见的UI组件之一。而Jquery中的dialog属性,是一个非常方便的弹出框组件。本文将详细介绍dialog的基本属性和用法。 dialog基本属性 autoOpen:bool 是否随着页面的加载自动弹出,默认为true。 modal:bool 是否是模态框,即弹出框弹出后,不允许页面的其他元…

    other 2023年6月20日
    00
  • SpringBoot读取Resource下文件的4种方法

    当使用SpringBoot进行开发时,有时候需要读取Resource文件夹下的文件,本文将介绍4种读取Resource下文件的方法。 方法一:使用ClassLoader.getResourceAsStream() ClassLoader.getResourceAsStream()方法可以获取资源在classpath下面的任意资源。如下所示: InputStr…

    other 2023年6月25日
    00
  • angular项目中使用antd日历组件

    以下是关于“Angular项目中使用Antd日历组件”的完整攻略,过程中包含两个示例。 背景 Antd是一个基于React的UI组件库但是它也提供了一些Angular组件。其中,Antd的日历组件非常实用,可以帮助我们快速构建日历。本攻略将介绍如何在Angular项目中使用Antd日历组件。 基本原理 在Angular项目中使用Antd日历组,我们需要先安装…

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