vue axios封装及API统一管理的方法

下面介绍一下“Vue axios封装及API统一管理的方法”的完整攻略。

一、为什么需要封装及统一管理API

在Vue项目中使用axios发送HTTP请求是非常常见的,而每次发送请求时,都需要编写一大堆繁琐的代码,例如设置请求头、处理错误、在请求完成后进行数据处理等等。

同时,在一个大型项目中,可能会存在多个人协作开发,每个人都有可能编写自己的API请求函数,这样会导致代码冗余,无法统一管理。

因此,我们需要将axios进行封装,并统一管理API请求函数,方便团队开发以及后期维护。

二、如何封装及统一管理API

下面介绍一下封装及统一管理API的具体步骤。

1. 创建API目录

在Vue项目的src目录下创建一个api目录,用于存放API请求函数。

2. 创建base.js文件

在api目录下创建一个base.js文件,用于初始化axios实例。

import axios from 'axios';

// 创建axios实例
const instance = axios.create({
  baseURL: 'http://localhost:3000/api', // API请求的默认前缀
  timeout: 5000, // 请求超时时间
  headers: {
    'Content-Type': 'application/json;charset=UTF-8',
  },
});

// 设置post请求头
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

// 添加请求拦截器
instance.interceptors.request.use(
  config => {
    // 在发送请求之前做某事,比如加一个loading
    return config;
  },
  error => {
    // 请求错误时做些事
    return Promise.reject(error);
  },
);

// 添加响应拦截器
instance.interceptors.response.use(
  response => {
    // 在响应之后做某事,比如关闭loading
    return response.data;
  },
  error => {
    // 对响应错误做点什么
    return Promise.reject(error);
  },
);

export default instance;

这里我们初始化了一个axios实例,并设置了默认的请求地址、超时时间和请求头。

3. 创建API请求文件

在api目录下创建一个文件,例如user.js,用于存放用户相关的API请求函数。

import instance from './base';

// 用户登录
export const login = params => {
  return instance.post('/user/login', params);
};

// 获取用户信息
export const getUserInfo = () => {
  return instance.get('/user/info');
};

// 修改用户信息
export const updateUser = params => {
  return instance.post('/user/update', params);
};

这里我们以用户相关的API为例,编写了登录、获取用户信息和修改用户信息三个API请求函数。

4. 统一管理API请求函数

为了方便管理,我们可以将所有API请求函数存放在一个文件中,在这个文件中统一导出。

在api目录下创建一个index.js文件,用于导出我们所有API请求函数。

import * as user from './user';

export default {
  user,
};

这样,在我们的组件中,就可以通过引入api/index.js,然后调用api.user.login来发送请求,而无需再次编写大量的axios请求代码了。

三、示例说明

示例一:登录页面

在登录页面中,我们需要编写一个方法,来发送登录请求,获取到返回的token,并将其存储到localStorage中。

<template>
  <div>
    <input type="text" v-model="username" placeholder="请输入用户名" />
    <input type="password" v-model="password" placeholder="请输入密码" />
    <button @click="login">登录</button>
  </div>
</template>

<script>
import api from '@/api';

export default {
  data() {
    return {
      username: '',
      password: '',
    };
  },
  methods: {
    async login() {
      try {
        const res = await api.user.login({ username: this.username, password: this.password });
        localStorage.setItem('token', res.token);
        alert('登录成功!');
      } catch (error) {
        alert('登录失败!');
      }
    },
  },
};
</script>

在这个示例中,我们引入了api/user,并通过api.user.login方法来发送登录请求,通过async/await语法来处理异步请求结果。

示例二:用户信息页面

在用户信息页面中,我们需要编写一个方法,来获取用户信息,并将其显示在页面上。

<template>
  <div>
    <div>用户名:{{ userInfo.username }}</div>
    <div>手机号:{{ userInfo.phone }}</div>
    <div>邮箱:{{ userInfo.email }}</div>
    <button @click="updateUser">修改信息</button>
  </div>
</template>

<script>
import api from '@/api';

export default {
  data() {
    return {
      userInfo: {},
    };
  },
  created() {
    this.getUserInfo();
  },
  methods: {
    async getUserInfo() {
      try {
        const res = await api.user.getUserInfo();
        this.userInfo = res.data;
      } catch (error) {
        alert('获取用户信息失败!');
      }
    },
    async updateUser() {
      try {
        // 假设我们的表单中有username、phone、email三个字段
        const params = {
          username: this.userInfo.username,
          phone: this.userInfo.phone,
          email: this.userInfo.email,
        };
        await api.user.updateUser(params);
        alert('修改用户信息成功!');
      } catch (error) {
        alert('修改用户信息失败!');
      }
    },
  },
};
</script>

在这个示例中,我们通过api.user.getUserInfo方法来获取用户信息,并通过async/await语法来处理异步请求结果。

同时,在修改用户信息时,我们将当前用户信息展示在表单中,并通过api.user.updateUser方法来发送请求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue axios封装及API统一管理的方法 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • windows命令行复制与粘贴技巧

    下面是关于windows命令行复制与粘贴的攻略: 1. 复制与粘贴命令行中的文本 在命令行中复制和粘贴文本是非常常见的操作。在Windows下,可以使用以下步骤完成复制和粘贴: 复制文本 选中要复制的文本(可以使用鼠标或者键盘)。 执行Ctrl+C命令或者按鼠标右键并选择“复制”。 粘贴文本 移动光标到要粘贴文本的位置。 执行Ctrl+V命令或者按鼠标右键并…

    other 2023年6月26日
    00
  • ios7升级错误3194怎么办?苹果ios7升级错误3194原因及解决方法

    ios7升级错误3194怎么办?苹果ios7升级错误3194原因及解决方法 如果你在升级iOS 7时遇到了错误3194,不要担心。这篇攻略会给出该错误的原因和解决方法。我们先来看一下这个错误的提示: 错误 3194:无法升级iOS,因为你正在使用的是不被认可的变更版本。可能会导致升级失败或损坏iOS设备。 错误原因 1.苹果服务器无法验证或签署Firmwar…

    other 2023年6月27日
    00
  • ExtJS5搭建MVVM框架

    ExtJS5搭建MVVM框架 在前端开发中,为了提高代码的复用性和可维护性,采用MVVM框架已经成为了一种很普遍的做法。jQuery、AngularJS、Vue.js等框架都采用了MVVM架构。在本文中,我们将介绍如何使用ExtJS5来搭建MVVM框架。 什么是MVVM? 在开始介绍MVVM框架之前,我们先来看看什么是MVVM。 MVVM是Model-Vie…

    其他 2023年3月28日
    00
  • 关于同时使用swiper和echarts遇到的问题及解决方法

    针对同时使用swiper和echarts遇到的问题及解决方法,以下是完整攻略: 问题描述 在同时使用Swiper和Echarts时,可能会出现以下问题: Echarts在swiper中无法完全显示或者显示错位; Swiper在使用Echarts时滑动不流畅,卡顿等问题。 解决方法 针对以上问题,我们可以采用以下方法解决: 1. Echarts无法完全显示或者…

    other 2023年6月27日
    00
  • Lesson03_02 样式规则选择器

    Lesson03_02 样式规则选择器 1. 什么是样式规则选择器 样式规则选择器是 CSS 中一种用来选择特定 HTML 元素并为其应用样式的方法。通过选择器,我们可以选择要样式化的特定元素,然后定义应用于该元素的样式规则。 在 CSS 中,有很多不同类型的选择器,包括标签选择器、类选择器、ID 选择器、属性选择器等。这些选择器可以单独使用或者一起组合使用…

    other 2023年6月28日
    00
  • 整理Javascript基础入门学习笔记

    整理Javascript基础入门学习笔记攻略 学习Javascript的基础知识是成为一名优秀的前端开发人员的重要一步。下面是一个详细的攻略,帮助你整理Javascript基础入门学习笔记。 1. 学习资源 首先,你需要找到一些优质的学习资源来学习Javascript的基础知识。以下是一些推荐的资源: MDN Web 文档:MDN提供了非常详细和权威的Jav…

    other 2023年8月8日
    00
  • 【原】K3Cloud平台开发之Python插件

    【原】K3Cloud平台开发之Python插件 概述 K3Cloud是著名的企业管理软件Kingdee公司推出的一个云端企业应用平台。该平台有着强大的开发能力,可以通过插件机制扩展K3Cloud的功能。本文将介绍在K3Cloud平台上开发Python插件的方法。 环境准备 在开始编写Python插件之前,需要准备以下环境: 安装K3Cloud集成开发环境,并…

    其他 2023年3月28日
    00
  • ActionScript的API文档生成工具ASDoc

    ASDoc是一种基于ActionScript语言的API文档生成工具,可以通过注释生成完整的文档,方便其他开发者阅读和使用代码。下面是ASDoc的详细攻略: 1. 安装ASDoc ASDoc是一个单独的工具包,需要手动安装。可以将其下载下来,然后将ASDoc.exe放入到Flex SDK的bin目录下。 2. 编写代码注释 在代码中编写好注释是使用ASDoc…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部