Vue项目中封装axios的方法

yizhihongxing

下面我来详细讲解一下“Vue项目中封装axios的方法”的完整攻略。

为什么要封装axios?

首先,我们需要知道为什么要封装axios。axios是一个非常好用的第三方库,但是在很多情况下,我们需要对axios进行一些封装才能更好地满足我们的需求。主要有以下几点原因:

  1. 方便统一处理请求异常、错误提示、请求头等
  2. 方便设置全局loading效果
  3. 方便在请求前和请求后进行拦截操作
  4. 方便给每个请求设置默认的请求参数等

因此,我们需要对axios进行一些封装,以便我们更好地使用它。

封装axios的方法

封装axios的方法有很多种,这里介绍一种常用的方法。

1. 创建一个axios实例

首先,我们需要通过axios.create方法创建一个axios实例。这个实例可以对axios的默认配置进行自定义,并可以设置拦截器等。

import axios from 'axios'

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // api的base_url
  timeout: 5000 // 请求超时时间
})

export default service

2. 添加请求拦截器

我们可以通过添加请求拦截器,在请求发送前做一些处理,比如设置请求头,添加loading效果等。

// request拦截器
service.interceptors.request.use(
  config => {
    // 添加请求头
    config.headers['Authorization'] = getToken()
    // 显示loading效果
    Loading.service({
      fullscreen: true
    })
    return config
  },
  error => {
    // 处理请求错误
    console.log(error)
    Promise.reject(error)
  }
)

3. 添加响应拦截器

在接收到响应后,我们可以通过添加响应拦截器,对响应数据做一些处理,比如统一处理错误提示等。

// respone拦截器
service.interceptors.response.use(
  response => {
    // 隐藏loading效果
    Loading.service({
      fullscreen: true
    }).close()
    const res = response.data
    if (res.code !== 200) {
      // 统一处理错误提示
      MessageBox.alert(res.message, '错误提示', {
        confirmButtonText: '确定',
        type: 'error'
      })
      return Promise.reject('error')
    } else {
      return response.data
    }
  },
  error => {
    // 处理响应错误
    Loading.service({
      fullscreen: true
    }).close()
    console.log('err' + error) // for debug
    MessageBox.alert(error.message, '错误提示', {
      confirmButtonText: '确定',
      type: 'error'
    })
    return Promise.reject(error)
  }
)

4. 封装get和post请求方法

在axios实例上可以封装我们常用的请求方法,如get、post等。

export function get(url, params) {
  return service({
    url: url,
    method: 'get',
    params: params
  })
}

export function post(url, data) {
  return service({
    url: url,
    method: 'post',
    data: data
  })
}

示例说明

下面是两个示例,分别演示了如何使用封装的axios方法:

示例1:获取用户信息

import { get } from '@/utils/request'

export function getUserInfo() {
  return get('/user/info')
}

在getUserInfo方法中,我们使用了封装的get方法,这个方法会自动发送一个get请求到 /user/info 路径,并返回请求结果。

示例2:提交表单数据

import { post } from '@/utils/request'

export function submitForm(data) {
  return post('/form/submit', data)
}

在submitForm方法中,我们使用了封装的post方法,这个方法会自动发送一个post请求到 /form/submit 路径,并将表单数据作为请求体发送。

好了,以上就是Vue项目中封装axios的方法的完整攻略,希望对你有帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue项目中封装axios的方法 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue中ref、reactive、toRef、toRefs、$refs的基本用法总结

    以下是Vue中ref、reactive、toRef、toRefs、$refs的完整攻略: 1. ref ref 可以将组件或DOM元素在父组件中进行标识。同时,也可以在父组件中使用 $refs 访问到子组件或DOM元素。使用ref的方式如下: <template> <div> <input type="text&quo…

    Vue 2023年5月28日
    00
  • vue3 组件与API直接使用的方法详解(无需import)

    vue3 组件与API直接使用的方法详解(无需import) 概述 在Vue 3中,通过创建应用程序实例或者通过使用 defineComponent 函数可以定义组件。组件可以直接使用Vue 3的全局API和Composition API上下文。 直接使用Vue 3的全局API Vue 3通过app.config.globalProperties属性,允许我…

    Vue 2023年5月27日
    00
  • 分分钟学会vue中vuex的应用(入门教程)

    分分钟学会vue中vuex的应用(入门教程) 简介 Vuex是一个专门为Vue.js设计的状态管理库,它可以简化Vue.js应用程序中状态管理的开发流程,提高应用程序的性能和可维护性。 安装 Vuex可以通过npm进行安装,打开命令行界面并输入以下命令: npm install vuex 配置 在Vue.js应用程序中使用Vuex,需要依次执行以下步骤: 引…

    Vue 2023年5月27日
    00
  • vue中异步函数async和await的用法说明

    下面就给您详细讲解下“vue中异步函数async和await的用法说明”的完整攻略。 1.什么是异步函数 在Vue中,经常会使用异步函数来处理异步操作,比如通过Ajax获取远程的数据、读取本地数据库等等。异步函数是一种特殊的函数,可以使函数的执行不阻塞主线程,并且可以在异步操作完成后通过回调函数来处理结果。在Vue中,异步函数通常使用Promise或asyn…

    Vue 2023年5月28日
    00
  • 详解vue中$nextTick和$forceUpdate的用法

    详解vue中$nextTick和$forceUpdate的用法 1. $nextTick的用法 1.1 作用 $nextTick是Vue中提供的异步方法,用于在下次DOM更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法,可以获取更新后的DOM。 示例代码: <template> <div> <h2>{{ mes…

    Vue 2023年5月29日
    00
  • vue中动态添加style样式的几种写法总结

    当我们在Vue中需要动态添加样式时,我们可以使用以下几种方法: 使用class绑定 Vue中可以使用:class或者:v-bind指令将一个变量与class属性绑定起来,这样我们可以通过改变变量的值来改变元素的class属性,从而改变样式。 <template> <div :class="{ ‘selected’: isSelec…

    Vue 2023年5月27日
    00
  • vue多次循环操作示例

    下面是关于“vue多次循环操作示例”的完整攻略,我将分两个示例说明: 示例一:多层循环嵌套 在vue中,可以使用嵌套的v-for指令来进行多层循环嵌套。比如,我们有一个任务列表,每个任务列表下面又有多个子任务列表,现在要把这些任务列表都展示出来。可以使用以下代码实现: <div v-for="(task, index) in tasks&qu…

    Vue 2023年5月27日
    00
  • 浅谈Vue.js中如何实现自定义下拉菜单指令

    下面就来详细讲解如何在Vue.js中实现自定义下拉菜单指令。 如何定义一个自定义指令 在Vue.js中定义一个自定义指令非常简单,只需要通过Vue.directive函数来注册一个全局指令,或者通过指令选项来定义一个局部指令即可。下面是一个例子: // 定义全局指令 Vue.directive(‘my-directive’, { bind: function…

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