vue axios基于常见业务场景的二次封装的实现

yizhihongxing

为了更好地在Vue项目中使用axios库,我们可以通过二次封装的方式对axios进行自定义处理,使其更加符合我们项目的实际需求。下面是基于常见业务场景的二次封装步骤及示例说明:

一、安装axios和qs

在使用axios之前,我们需要安装axios和qs两个依赖。axios是一种基于Promise的HTTP客户端,可以用于浏览器和node.js。而qs是一个处理URL查询字符串的JavaScript库。

npm install axios qs -S

二、创建Http封装

我们可以创建一个叫Http.js的文件来封装我们的http请求,该文件应该导出一个已经包装过的axios实例。

import axios from 'axios';
import qs from 'qs';

const instance = axios.create({
    timeout: 10000,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    }
});

instance.interceptors.request.use(
    config => {
        // 在请求发送前做一些处理
        config.method === 'post'
            ? config.data = qs.stringify({...config.data})
            : config.params = {...config.params};
        return config;
    },
    error => {
        // 请求错误时做一些处理
        return Promise.reject(error);
    }
);

instance.interceptors.response.use(
    response => {
        // 对响应数据做一些处理
        return response.data;
    },
    error => {
        // 统一错误处理
        if (error && error.response) {
            switch (error.response.status) {
                case 400:
                    error.message = '请求错误';
                    break;
                case 401:
                    error.message = '未授权,请登录';
                    break;
                case 403:
                    error.message = '拒绝访问';
                    break;
                case 404:
                    error.message = `请求地址出错: ${error.response.config.url}`;
                    break;
                case 408:
                    error.message = '请求超时';
                    break;
                case 500:
                    error.message = '服务器内部错误';
                    break;
                case 501:
                    error.message = '服务未实现';
                    break;
                case 502:
                    error.message = '网关错误';
                    break;
                case 503:
                    error.message = '服务不可用';
                    break;
                case 504:
                    error.message = '网关超时';
                    break;
                case 505:
                    error.message = 'HTTP版本不受支持';
                    break;
                default:
            }
            error.message = `${error.message},错误码:(${error.response.status})`;
        } else {
            error.message = `连接出错(${error.response.status})!`;
        }
        return Promise.reject(error);
    }
);

export default instance;

三、创建封装工具

我们可以创建一个叫api.js的文件,里面定义了所有的请求方法。每个请求返回一个promise,因此可以使用.then().catch()方法处理响应。

下面是一个获取用户信息的示例:

import http from './http';

// 获取用户信息
export const getUserInfo = (id) => {
  return http.get(`/users/${id}`);
}

我们可以调用这个方法的方式:

import * as api from './api';

api.getUserInfo(123).then(res => {
    console.log(res);
}).catch(err => {
    console.log(err);
})

四、示例解释

这是一个以获取用户信息为例的二次封装及使用,我们需要首先引入封装好的http请求:

import http from './http';

然后,我们在api.js文件中定义函数getUserInfo,该函数将用户id作为参数传入,并返回一个使用GET请求的promise对象:

export const getUserInfo = (id) => {
  return http.get(`/users/${id}`);
}

此时,我们就可以在页面中进行数据的请求了:

import * as api from './api';

// 获取用户信息
api.getUserInfo(123).then(res => {
    // 做一些处理
}).catch(err => {
    console.log(err);
})

除了这个获取用户信息的示例,我们也可以依据项目需求封装其它请求方法,如后台管理系统的增删改查操作等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue axios基于常见业务场景的二次封装的实现 - Python技术站

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

相关文章

  • 详解10分钟学会vue滚动行为

    详解10分钟学会vue滚动行为 本文将详细讲解如何在Vue中实现滚动行为,以满足用户在页面中的滚动需求。通过本文,你可以快速了解Vue的相关特性和API,快速上手Vue的开发。 Vue中的滚动行为实现 在Vue中,通过<router-link>组件的scroll-behavior属性,我们可以快速实现滚动行为。 首先,我们需要在router/in…

    Vue 2023年5月29日
    00
  • 浅析vue深复制

    浅析vue深复制 什么是深复制 在编程中,复制一个对象并不是简单地复制原先的地址,而是将原对象的所有数据都复制到一个新的内存地址中,我们称之为复制对象。当我们在拷贝一个对象的时候,有可能会遇到”浅复制”和”深复制”。 浅复制:复制对象时,指向某个指针的指针只能复制指针的值,而不能复制所指向的对象。因此,当我们改变所指向对象的内容时,指针也会发生相应的变化。 …

    Vue 2023年5月28日
    00
  • vue过滤器实现日期格式化的案例分析

    下面我就为你详细讲解“Vue过滤器实现日期格式化的案例分析”的完整攻略,并且给出两个具体的示例说明。 Vue过滤器实现日期格式化的原理 在Vue中,过滤器(filter)是对需要显示的数据的一种格式化处理方法,可以在页面中直接使用,让数据更加符合人类的阅读习惯。而日期格式化正是过滤器的一种常见应用。它的原理也比较简单,就是通过Date对象的原型方法或者第三方…

    Vue 2023年5月29日
    00
  • vue2之vue.config.js最全配置教程

    下面就详细讲解一下 “vue2之vue.config.js最全配置教程”的完整攻略。 简介 vue.config.js 是 Vue CLI 3.x 中一个重要的配置文件,用于对项目进行全局的配置。这个文件不存在,需要手动创建,与 package.json 文件同级。通过 vue.config.js 文件的配置,我们可以实现很多高级功能,例如 Webpack …

    Vue 2023年5月27日
    00
  • vue项目的创建的步骤(图文教程)

    下面是详细讲解Vue项目的创建的步骤: 1. 安装Vue CLI Vue CLI是一个构建Vue项目的官方脚手架工具,使用它可以快速生成一个基于Vue的项目结构,我们需要事先安装它。 可以使用以下命令安装Vue CLI: npm install -g @vue/cli 其中 -g 参数表示全局安装,如果已经安装过Vue CLI,则可以直接跳过此步。 2. 创…

    Vue 2023年5月27日
    00
  • vue $set 实现给数组集合对象赋值

    当使用 Vue.js 开发中,如果想要给数组或对象添加新属性并确保这些属性是可响应的,可以使用 Vue 的 $set 方法来实现。 Vue.$set() 方法接受三个参数:对象,键,值。它所做的主要工作就是创建新属性,并将其设置为可响应的。 下面是使用Vue.$set()方法来给数组添加新元素的示例: <template> <div>…

    Vue 2023年5月28日
    00
  • Vue动态组件与内置组件浅析讲解

    Vue动态组件与内置组件浅析讲解 什么是Vue动态组件 Vue动态组件是一种结合动态组件和组件的功能,允许我们在运行时通过提供一个名称来动态切换组件。 我们可以使用Vue的内置动态组件标签\<component>,该标签可以通过一个特殊的is属性动态绑定组件。 例如: <component :is="currentComponen…

    Vue 2023年5月28日
    00
  • Springboot-admin整合Quartz实现动态管理定时任务的过程详解

    下面就针对“Springboot-admin整合Quartz实现动态管理定时任务的过程详解”进行详细讲解。 一、背景介绍 在实际的开发过程中,定时任务的使用频率非常高。而对于Spring Boot项目来说,使用Quartz框架来实现定时任务是一种常见的做法。但是,随着业务的不断发展,我们的定时任务往往需要频繁地进行修改和管理,此时我们可以借助Springbo…

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