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

yizhihongxing

使用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日

相关文章

  • java音乐播放器课程设计

    Java音乐播放器课程设计攻略 本文将详细讲解Java音乐播放器的课程设计攻略。该课程设计的主要目标是实现一个简易的音乐播放器,包括音乐文件的播放、暂停、停止、音量调节、进度条显示等功能。 项目基本结构 首先,我们需要明确项目的基本结构。一个典型的Java音乐播放器项目应当包含以下几个部分: 主界面:显示音乐列表,提供播放、暂停、停止等按钮,以及音量和进度条…

    Vue 2023年5月28日
    00
  • VUE中的export default和export使用方法解析

    下面就为您详细讲解Vue中的export default和export使用方法解析。 1. export和export default的区别 在Vue中,我们常常使用export和export default来导出模块。它们的作用是相同的,都是用来将模块暴露给其他模块使用的。 不同的是,使用export导出的模块需要通过import {模块名} from ‘…

    Vue 2023年5月27日
    00
  • 一文学会什么是vue.nextTick()

    一文学会什么是vue.nextTick() 什么是vue.nextTick() vue.nextTick()是Vue.js的一个方法,它的作用是在修改数据之后等待DOM更新完毕后执行回调函数。在有些情况下,当我们修改了某个数据后需要对DOM进行操作(比如获取某个元素的高度),此时DOM可能还没有更新完毕,这就需要加入一个异步任务,等待DOM更新完毕后再执行相…

    Vue 2023年5月29日
    00
  • Vue.js 时间转换代码及时间戳转时间字符串

    对于Vue.js的时间转换,可以通过使用其提供的filters(过滤器)来实现,同时我们也可以使用moment.js这个工具库来方便地进行时间转换。 使用 Vue.js Filter 进行时间转换 在 Vue.js 中,我们可以通过定义 Filter 来实现字符串到特定格式的日期的转换,该功能类似于 AngularJS 中的 Filter。下面是一个简单的例…

    Vue 2023年5月27日
    00
  • 解决vue select当前value没有更新到vue对象属性的问题

    我将为您详细讲解“解决Vue Select当前Value没有更新到Vue对象属性的问题”的完整攻略。 简介 在Vue开发中,我们通常会使用Vue Select组件来实现下拉选择框。但是在使用过程中,会发现Vue Select的value属性不能够及时更新到Vue对象中的属性,导致无法实现数据的双向绑定。本文将为大家提供解决这个问题的完整攻略。 解决方案 解决…

    Vue 2023年5月28日
    00
  • 带你一步步从零搭建一个Vue项目

    让我为您详细讲解“带你一步步从零搭建一个Vue项目”的完整攻略。 前提条件 在开始此过程之前,您需要安装以下工具:- Node.js(建议使用官方稳定版本)- Visual Studio Code 或其他文本编辑器- 命令行工具(例如终端或Git Bash) 第一步:创建项目 使用 Vue CLI 创建一个新的 Vue 项目。在终端中输入以下命令: vue …

    Vue 2023年5月28日
    00
  • vue.js基于v-for实现批量渲染 Json数组对象列表数据示例

    下面是针对题目的详细讲解: 什么是vue.js Vue.js是一个构建用户界面的渐进式框架,它使得构建大型的单页面应用程序变得更加容易。 在Vue.js中,我们可以使用它的指令和模板语法轻松地渲染数据,从而实现与数据绑定的动态效果。 什么是v-for指令 Vue.js提供了v-for指令,它可以用于渲染列表或者数组数据。我们可以将其应用到一个HTML元素上,…

    Vue 2023年5月27日
    00
  • vue-quill-editor+plupload富文本编辑器实例详解

    Vue-Quill-Editor + Plupload 富文本编辑器实例攻略 1. 简介 在 Web 开发过程中,富文本编辑器是一个重要的工具,它可以让用户通过类似于微信公众号编辑器的方式撰写富文本内容,从而满足更多细节定制和更丰富的表现力需求。 Vue-Quill-Editor 是一款基于 Vue.js 的 Quill 富文本编辑器组件库,而 Pluplo…

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