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

为了更好地在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日

相关文章

  • Vue2实现组件props双向绑定

    下面我将详细讲解如何在Vue2中实现组件props的双向绑定。 1. Vue2中props的单向绑定 Vue2中的props是单向绑定的,即父组件可以向子组件传递数据,但是子组件不能直接修改父组件传递的props。在子组件中默认情况下只能读取父组件传递的props值,如果想要修改这些值,需要通过事件的形式在子组件中触发父组件传递的方法来实现。 下面是一个示例…

    Vue 2023年5月28日
    00
  • Vue实现文件上传和下载功能

    实现文件上传和下载功能是Web应用开发中经常需要涉及的功能之一,Vue作为一款流行的前端框架也能够提供方便灵活的实现方式。下面是详细的攻略过程。 实现文件上传 1. 创建上传组件 首先,我们需要创建一个上传组件。这个组件需要包含一个可以选择文件的按钮和实际上传文件的功能。我们可以使用axios库来发送HTTP请求,从而上传文件。 <template&g…

    Vue 2023年5月28日
    00
  • Vue循环遍历选项赋值到对应控件的实现方法

    Vue循环遍历选项赋值到对应控件是Vue中经常使用的一种数据绑定方式,可以方便地将数据在多个组件之间进行传递和渲染。下面是实现该功能的完整攻略。 方法一:使用v-for指令循环遍历选项 Vue提供了v-for指令用于循环遍历数组或对象,我们可以在模板中使用v-for指令循环遍历选项,并通过绑定v-model指令将选项和控件进行双向数据绑定,以实现将选项赋值到…

    Vue 2023年5月27日
    00
  • vue实现列表的添加点击

    下面是关于如何使用Vue实现列表的添加点击的完整攻略。为了使内容更加易懂,我将分为以下几个部分进行讲解: Vue组件的创建 列表的初始化 实现添加点击功能 1. Vue组件的创建 首先,我们需要在Vue中创建一个组件用于显示列表,示例代码如下: <template> <div> <ul> <li v-for=&quo…

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

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

    Vue 2023年5月28日
    00
  • vue项目首次打开时加载速度很慢的优化过程

    当我们在使用Vue构建一个应用时,有时候我们会发现应用在首次打开时加载速度很慢,影响用户的使用体验。这种情况通常是由于以下原因导致的: 应用程序的代码打包较大 应用程序中网络请求过多 针对这些问题,我们可以采取以下的优化策略来缩短首次加载时间,并提高应用程序的性能: 1. 开启gzip进行压缩 gzip是一种压缩文件格式,通过gzip可以压缩网页响应达到更快…

    Vue 2023年5月27日
    00
  • 单页面vue引入百度统计的使用方法示例详解

    下面我将为你详细讲解使用Vue单页面应用集成百度统计的完整攻略。 步骤一:创建百度统计账号 首先,你需要到百度统计官网 https://tongji.baidu.com/ 注册并创建自己的统计账号。 在注册后,你需要添加一个网站并获取统计代码。在“网站管理” 页面,点击“添加网站”,根据指导填写网站信息。在添加成功后,会自动跳转到统计代码页面。在这里,你会看…

    Vue 2023年5月27日
    00
  • Vue3.0插件执行原理与实战

    下面我将为你详细讲解“Vue3.0插件执行原理与实战”的完整攻略。 前言 在Vue.js 3.0中,插件的执行原理发生了一些变化。在Vue.js 2.0中,插件是通过在Vue构造函数上调用静态方法来注册的。但是在Vue.js 3.0中,插件的注册方式更加灵活,可以通过调用应用程序实例上的方法来注册插件。 本文将详细讲解Vue.js 3.0插件的执行原理,并提…

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