Vue项目中如何使用Axios封装http请求详解

使用Axios进行http请求可以帮助我们快速的开发Vue项目,Axios支持浏览器、node.js和可以异步的进程通信。在Vue项目中,我们可以封装Axios进行http请求,以便于让我们的代码更加集中和易于维护。

下面就是Vue项目中如何使用Axios封装http请求的详细攻略:

1. 安装Axios

首先,在Vue项目中使用Axios,需要进行安装。运行以下命令即可安装Axios:

npm install axios --save

2. 封装Axios

在Vue项目中封装Axios,一般可以新建一个http.js文件来进行封装。

以下是一个常用的Axios封装的示例:

import axios from 'axios';
import { Message } from 'element-ui';

// 创建axios实例
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // process.env.BASE_API
  timeout: 5000 // 请求超时时间
});

// request拦截器
service.interceptors.request.use(
  config => {
    // 在发送请求之前做些什么
    return config;
  },
  error => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// response拦截器
service.interceptors.response.use(
  response => {
    const res = response.data;

    // 如果返回的状态码不是20000,则认为有错误
    if (res.code !== 20000) {
      Message({
        message: res.message || 'error',
        type: 'error',
        duration: 5 * 1000
      });

      // 50008: 非法的token; 50012: 其他客户端登录了; 50014: Token 过期了;
      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
        // 请自行在引入 MessageBox
        // import { Message, MessageBox } from 'element-ui'
        MessageBox.confirm('你已经注销,可以取消以留在该页面,或者重新登录', '确定登出', {
          confirmButtonText: '重新登录',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          store.dispatch('FedLogOut').then(() => {
            location.reload(); // 为了重新实例化vue-router对象 避免bug
          });
        });
      }
      return Promise.reject('error');
    } else {
      return response.data;
    }
  },
  error => {
    console.log('err' + error); // for debug
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    });
    return Promise.reject(error);
  }
);

export default service;

3. 使用Axios封装进行http请求

在Vue项目中,我们可以直接引用封装好的Axios进行http请求,如下所示:

import request from '@/utils/request';

export function login(username, password) {
  return request({
    url: '/user/login',
    method: 'post',
    data: {
      username,
      password
    }
  });
}

以上代码是一个使用Axios封装进行登录请求的示例,其中使用了封装好的request方法来发起http请求。

类似的,我们也可以封装其他常用的http请求方式,如get、post、put、delete等。

4. 示例说明1:使用Axios进行异步请求数据

以下是一个异步请求数据的示例:

// 请求用户信息
getUserInfo() {
  this.loading = true
  axios.get('/getUserInfo')
      .then(res => {
          console.log('用户信息:', res)
          this.userInfo = res.data.data
          this.loading = false
      })
      .catch(err => {
          console.error('获取用户信息失败:', err)
          this.loading = false
      })
}

5. 示例说明2:使用Axios进行post请求

以下是一个使用Axios进行post请求的示例:

axios.post('/login', {
  username: 'foo',
  password: 'bar'
})
.then(response => {
  console.log(response);
})
.catch(error => {
  console.log(error);
});

以上就是使用Axios封装http请求的攻略了,通过这种方式能够使Vue项目开发更加方便和高效。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue项目中如何使用Axios封装http请求详解 - Python技术站

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

相关文章

  • 详解Vue3 中的计算属性及侦听器

    详解Vue3 中的计算属性及侦听器 计算属性 计算属性是Vue中一种非常常见的属性类型,可以根据其他数据的变化而自动更新。在Vue3中,计算属性的写法有所变化,需要使用computed方法来定义。 <template> <div> <p>商品价格: {{ price }}</p> <p>打折后价格:…

    Vue 2023年5月28日
    00
  • vue项目中添加electron的详细代码

    在Vue项目中添加Electron的过程如下所述: 安装Electron相关依赖 需要安装Electron相关依赖,可以在终端或命令行中运行以下命令: npm install –save-dev electron 在Vue项目中添加Electron相关文件 在Vue项目的根目录下,需要添加一个名为“main.js”的文件,其中包含启动Electron的必要…

    Vue 2023年5月28日
    00
  • Vue如何实现变量表达式选择器

    Vue中实现变量表达式选择器,需要使用Vue的计算属性computed以及Vue的模板语法。下面是完整的攻略,包括两个示例说明: 步骤一:定义计算属性 在Vue组件中,我们可以使用计算属性computed来定义一个具有getter函数的属性。该getter函数可以根据组件的数据data以及其他Vue实例的数据来计算出该计算属性的值。因此,我们可以使用计算属性…

    Vue 2023年5月27日
    00
  • vue长列表优化之虚拟列表实现过程详解

    标题:Vue长列表优化之虚拟列表实现过程详解 1. 前言 在处理Vue中长列表(包含大量子组件)时,当数据更新时,会造成较大的性能问题。因此,为了提高Vue应用的性能,我们通常会做一些长列表的优化。其中,虚拟列表技术是一种高效的长列表优化方法。本文旨在介绍Vue中如何利用虚拟列表技术实现长列表优化。 2. 虚拟列表实现过程详解 2.1 什么是虚拟列表 虚拟列…

    Vue 2023年5月29日
    00
  • VUE DEMO之模拟登录个人中心页面之间数据传值实例

    我们来详细讲解一下“VUE DEMO之模拟登录个人中心页面之间数据传值实例”。 简介 在Vue框架中,不同页面之间的数据传值是常见的操作。本文就介绍一种实现模拟登录个人中心页面之间数据传值的方法。通过这种方法,可以更好地理解在Vue中如何实现不同页面之间的数据传值。 实现过程 准备工作 首先,需要准备好Vue.js和Vue-Router两个库。可以使用npm…

    Vue 2023年5月27日
    00
  • Vue向后端传数据后端接收为null问题及解决

    针对“Vue向后端传数据后端接收为null问题及解决”这个问题,这里提供一个完整攻略来解决此问题。 问题背景 在使用Vue进行开发时,需要向后端传递数据,但是在后端测试时,接收到的数据却是null,这个问题很常见,主要原因是后端未能正确解析前端的请求数据。在这种情况下,我们需要在Vue中进行一些设置,以确保后端可以正确识别和解析请求数据。 解决方案 方案一:…

    Vue 2023年5月27日
    00
  • JS实现的手机端精简幻灯片效果

    下面是JS实现的手机端精简幻灯片效果的完整攻略: 一、准备工作 创建HTML文件和CSS文件,并引入所需的JS库和CSS文件。 在HTML文件中创建一个容器元素,该元素将作为幻灯片的容器。 在容器元素中创建需要的幻灯片元素,并设置每个幻灯片的基本样式。 <div class="slide-container"> <div…

    Vue 2023年5月28日
    00
  • vue-cli3环境变量与分环境打包的方法示例

    下面是关于“vue-cli3环境变量与分环境打包的方法示例”的详细说明: 什么是环境变量? 在编写前端代码时,我们常常会遇到需要在不同的环境(如开发环境、测试环境、生产环境)使用不同的配置的情况,比如不同的 API 地址、不同的请求路径等等。这时我们就需要使用环境变量来解决这个问题。 环境变量是一种全局可用的变量,可以在应用程序的任何地方访问它们,不仅如此,…

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