如何用vue封装axios请求

yizhihongxing

当我们使用Vue框架进行前端开发时,经常需要通过发送HTTP请求来与后台进行交互。其中,axios是一个很流行的HTTP请求工具库,它提供了简单易用、强大的API,并且可以拦截请求、响应。本文将详细讲解如何用Vue封装axios请求,并提供两个例子供参考。

安装axios和Vue-axios

使用npm或者yarn安装axios和Vue-axios:

npm install axios vue-axios --save

或者

yarn add axios vue-axios

创建axios实例

在src目录下,新建一个utils文件夹,在文件夹内创建一个axios.js文件,这个文件中我们创建axios实例并进行一些配置,比如设置API前缀、拦截请求等。

import axios from 'axios'

const instance = axios.create({
  baseURL: 'http://api.example.com', // 设置api前缀
  timeout: 10000, // 超时时间
  headers: { 'Content-Type': 'application/json;charset=UTF-8' } // 请求头
})

// 拦截请求
instance.interceptors.request.use(config => {
  // do something
  return config
}, error => {
  // do something
  return Promise.reject(error)
})

// 拦截响应
instance.interceptors.response.use(response => {
  // do something
  return response
}, error => {
  // do something
  return Promise.reject(error)
})

export default instance

在Vue中使用

在Vue项目中的main.js文件中,引入axios和Vue-axios,并将其挂载到Vue原型上,使其在每一个实例中可用。

import Vue from 'vue'
import App from './App.vue'
import axios from './utils/axios'
import VueAxios from 'vue-axios'

Vue.use(VueAxios, axios)

new Vue({
  render: h => h(App),
}).$mount('#app')

现在,在Vue组件中,就可以像下面这样使用axios了。

export default {
  data () {
    return { 
      users: [] 
    }
  },
  mounted () {
    this.$axios.get('users')
      .then(response => {
        console.log(response.data)
        this.users = response.data
      })
      .catch(error => console.log(error))
  }
}

示例1:发送带有token的请求

对于需要完成用户验证后才能访问的接口,我们需要在请求头中添加token。这里提供一个例子,展示如何在我们封装的axios中实现添加token。

const instance = axios.create({
  baseURL: 'http://api.example.com',
  timeout: 10000,
  headers: { 'Content-Type': 'application/json;charset=UTF-8' }
})

// 拦截请求,添加token
instance.interceptors.request.use(config => {
  const token = sessionStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, error => {
  return Promise.reject(error)
})

示例2:上传文件

当我们需要上传文件时,可以使用axios的FormData对象。下面提供一个例子,演示如何在我们封装的axios中使用FormData上传文件。

const handleUpload = async (file) => {
  const formData = new FormData()
  formData.append('file', file) // 将需要上传的文件放到FormData中
  try {
    const response = await this.$axios.post('/upload', formData, {
      headers: {
        'Content-Type': 'multipart/form-data' // 告诉后台上传的是文件
      }
    })
    console.log(response.data)
  } catch (error) {
    console.log(error)
  }
}

以上就是使用Vue封装axios请求的攻略,通过封装实例可以提高开发效率,更好的管理请求,提高代码的可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用vue封装axios请求 - Python技术站

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

相关文章

  • 封装flutter状态管理工具示例详解

    以下是“封装flutter状态管理工具示例详解”的完整攻略。 什么是状态管理? 状态管理是指在应用程序开发中管理应用程序状态的一种模式或技术。为了更好的协调控件的状态(数据)与用户交互,需要对一些组件状态做一个集中的管理,使组件可以及时响应用户的操作。 Flutter中的状态管理 在Flutter中,提供了多种状态管理技术,如InheritedWidget、…

    other 2023年6月25日
    00
  • java多态中的就近原则介绍

    Java多态中的就近原则介绍 Java中的多态性有三种表现形式:方法重载、方法重写和对象引用的多态性。其中,对象引用的多态性就是实现延迟绑定的方式,它可以让我们在程序运行时根据实际对象类型来确定调用哪个方法。 在多态场景下,就近原则是作用于对象引用调用方法时的参数列表类型的选择(即决定使用哪个方法),它和方法重载得到相同条件下的参数匹配的方式相同。当Java…

    other 2023年6月26日
    00
  • pytorch预测之解决多次预测结果不一致问题

    pytorch预测之解决多次预测结果不一致问题 在使用PyTorch进行神经网络的预测过程中,可能会发现多次预测同一组数据时,模型给出的预测结果会产生不一致的情况。这是由于模型中包含了dropout、随机初始化等随机因素导致的,为了解决这个问题,我们可以采取以下两种方法: 方法一:取消dropout 模型中的dropout层会随机地放弃部分神经元的输出,这是…

    other 2023年6月27日
    00
  • Android package属性、package name和Application ID三者的联系及区别

    Android package属性、package name和Application ID三者的联系及区别 在Android开发中,package属性、package name和Application ID是三个相关但又有区别的概念。下面是它们之间的联系和区别的详细说明: Package属性 Package属性是在AndroidManifest.xml文件中…

    other 2023年10月12日
    00
  • c#chart控件教程

    C# Chart控件教程 介绍 C# Chart控件是.NET Framework中的一个可视化控件,可以用于绘制各种类型的图表,如折线图、柱状图、饼图等。在数据分析和可视化方面,Chart控件是一个非常强大的工具,使用它可以快速直观地展现数据结论。 本篇教程将为你带来Chart控件的基本使用方法,从创建控件到绘制图表,一步步指导你实现各种图表的绘制。 创建…

    其他 2023年3月28日
    00
  • 淘宝IP地址库采集器c#代码

    淘宝IP地址库采集器C#代码攻略 淘宝IP地址库采集器是一个用于获取IP地址的地理位置信息的工具。以下是一个详细的攻略,包含了使用C#编写淘宝IP地址库采集器的完整过程。 步骤1:准备工作 在开始编写代码之前,确保你已经安装了以下软件和工具: Visual Studio(或其他C#开发环境) .NET Framework 步骤2:创建新的C#项目 首先,打开…

    other 2023年7月31日
    00
  • 基于JPA查询部分字段的相关事项

    基于JPA查询部分字段的相关事项需要注意以下几点: 1. 创建DTO对象 在JPA中,为了查询部分字段,需要创建一个DTO(Data Transfer Object)对象来存储查询出的结果。DTO对象一般包含了需要查询的字段,其中字段的类型和名称需要与实体类中对应的字段一致,以便查询结果正确存储。 下面是一个示例,创建一个名为UserDTO的DTO对象,其中…

    other 2023年6月26日
    00
  • VSCode修改编辑器配色? vscode代码配色方案介绍

    VSCode修改编辑器配色攻略 1. 选择配色方案 VSCode提供了多种配色方案供用户选择。要修改编辑器的配色,首先需要选择一个合适的配色方案。以下是两个示例配色方案的介绍: a. Monokai Monokai是一种非常受欢迎的配色方案,具有鲜明的颜色和高对比度。要使用Monokai配色方案,请按照以下步骤进行操作: 打开VSCode编辑器。 点击左侧的…

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