axios模块化封装实例化及vue本地解决跨域方案

非常感谢您的提问,下面是关于“axios模块化封装实例化及vue本地解决跨域方案”的完整攻略。

什么是axios?

Axios 是一个基于 promise 的 HTTP 库,可以用于浏览器和 node.js 中的 AJAX,其语法简单易懂,可以在客户端和服务端轻松使用。

axios的使用方法

安装axios:

我们可以采用 npm 安装 axios,使用命令:

npm install axios --save

引入axios:

安装完成后,在项目入口文件中引入 axios:

import axios from 'axios';

axios请求方式

  • GET 请求

axios.get('/api/getUserInfo', {
params: {
id: 123
}
}).then(res => {
console.log(res.data);
}).catch(err => {
console.log(err);
})

  • POST 请求

axios.post('/api/submitData', {
name: 'test',
age: 20
}).then(res => {
console.log(res.data);
}).catch(err => {
console.log(err);
})

axios模块化封装

在实际项目中,我们往往需要对 axios 进行封装,以便于统一管理请求拦截、响应拦截、统一返回值处理等操作,下面是一个简单的封装示例:

// api.js

import axios from 'axios';

const service = axios.create({
  baseURL: '/api',
  timeout: 5000 // 超时时间
});

// 请求拦截
service.interceptors.request.use(config => {
  // 在此处添加token等认证信息
  return config;
}, err => {
  return Promise.reject(err);
})

// 响应拦截
service.interceptors.response.use(res => {
  const code = res.data.code;
  if (code === 200) {
    return res.data.data;
  } else {
    // 在此处处理错误信息
    return Promise.reject(res);
  }
}, err => {
  return Promise.reject(err);
})

export default service;

axios实例化

为了更好的管理 axios 请求,我们可以使用实例化创建多个 axios 实例,下面是一个简单的实例化示例:

// api.js

import axios from 'axios';

const service1 = axios.create({
  baseURL: '/api1',
  timeout: 5000 // 超时时间
});

const service2 = axios.create({
  baseURL: '/api2',
  timeout: 5000 // 超时时间
});

export {
  service1,
  service2
};

vue本地解决跨域方案

我们知道,由于浏览器同源策略的限制,不能跨域访问接口,但是在开发过程中,我们往往需要访问不同的接口,这时候我们可以在接口的后面加上一个代理来解决跨域问题。

我们可以在项目根目录的 vue.config.js 文件中配置跨域代理,下面是一个简单的配置示例:

module.exports = {
  devServer: {
    port: 3000,
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

这样,我们就可以在本地开发时,使用 http://localhost:3000/api 访问 http://localhost:8080 服务端提供的接口,本地运行的 vue 项目就可以解决跨域问题了。

希望我的回答能够帮到您,如果您还有什么不懂得地方,请随时向我提出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:axios模块化封装实例化及vue本地解决跨域方案 - Python技术站

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

相关文章

  • 九度oj 题目1048:判断三角形类型

    九度oj 题目1048:判断三角形类型 题目描述 给定三条边,请你判断一下能不能组成一个三角形。 如果能组成三角形,你还需要告诉我们它的类型: 等边三角形 Equilateral Triangle 等腰三角形 Isosceles Triangle 直角三角形 Right Triangle 普通三角形 Common Triangle 不能构成三角形 Not A…

    其他 2023年3月28日
    00
  • 魔兽世界wlk怀旧服鸟德堆什么属性 鸟德属性优先级选择推荐

    魔兽世界WLK怀旧服鸟德堆什么属性 在魔兽世界怀旧服中,如果你选择扮演鸟德这个职业,想要在战斗中表现出色,那么你需要关注以下几个属性:精通、急速、暴击等,下面我将详细讲解。 属性说明 精通 精通是鸟德最为重要的属性之一,因为它可以提升你的宠物造成的伤害和你的治疗效果。一般来说,你需要将大部分的装备属性都分配给精通,甚至可以牺牲一些暴击和急速来提高精通。 急速…

    other 2023年6月27日
    00
  • php命令行写shell实例详解

    PHP命令行写Shell实例详解 本文将介绍如何使用PHP命令行写Shell,其中包含两个示例,分别为执行系统命令与修改文件内容。 环境准备 在开始之前,需要确保已经安装了PHP环境。同时,要在命令行中使用PHP,需要将PHP加入系统环境变量中。 实例一:执行系统命令 在PHP命令行中,使用exec函数可以执行系统命令。下面是一个简单的示例: <?ph…

    other 2023年6月26日
    00
  • oracle创建数据表以及对数据表、字段、主外键、约束的操作

    Oracle创建数据表以及对数据表、字段、主外键、约束的操作的完整攻略 在Oracle数据库中,创建数据表以及对数据表、字段、主外键、约束的操作是非常常见的操作。本文将提供Oracle创建数据表以及对数据表、字段、主外键、约束的操作的完整攻略,包括以下步骤: 创建数据表 修改数据表 删除数据表 添加字段 修改字段 删除字段 添加主键 添加外键 添加约束 示例…

    other 2023年5月9日
    00
  • teigha.net开发入门1-teigha介绍

    Teigha.net开发入门1-Teigha介绍 Teigha是一款强大的CAD开发平台,其可用于开发AutoCAD兼容的底层CAD应用程序,包括图形编辑器、CAD/CAM/CAE应用程序和定制业务应用程序。Teigha平台专注于AutoCAD DWG文件格式的读写和编辑,并提供了一些强大而易于使用的API来进行开发,同时也支持其他CAD格式的转换和导入。 …

    其他 2023年3月29日
    00
  • MySQL group by对单字分组序和多字段分组的方法讲解

    MySQL中的group by语句是用于对数据进行分组的,可以对一列或多列进行分组。下文将详细讲解MySQL group by对单个字段和多个字段进行分组的方法。 单个字段分组 假设我们有一个学生成绩表,表结构如下: id name subject score 1 Tom Math 80 2 Lily English 90 3 Tom English 85 …

    other 2023年6月25日
    00
  • jquery自动触发点击事件

    以下是jQuery自动触发点击事件的完整攻略: jQuery自动触发点击事件 在jQuery中,我们可以使用trigger()方法来自动触发元素的点击事件。以下是一些示例代码,演示如何使用trigger()方法自动触发点击事件: 1. 自动触发按钮的点击事件 以下是一个示例代码,演示如何自动触发按钮的点击事件: // HTML代码 <button id…

    other 2023年5月7日
    00
  • idea maven依赖引入失效无法正常导入依赖问题的解决方法

    解决 Maven 依赖引入失效无法正常导入依赖问题的攻略 当使用 Maven 构建项目时,有时候会遇到依赖引入失效的问题,导致无法正常导入依赖。下面是解决这个问题的完整攻略,包含了两个示例说明。 步骤一:清理本地 Maven 仓库 有时候,本地 Maven 仓库中的依赖可能出现问题,导致无法正确引入。因此,首先尝试清理本地 Maven 仓库,然后重新构建项目…

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