首页 > 其他分享 >vue项目中axios封装(数据请求封装)

vue项目中axios封装(数据请求封装)

时间:2024-06-13 11:33:59浏览次数:11  
标签:axios 封装 请求 headers vue error return config

一、定义utils(工具类)目录,并创建两个文件,request.js与http.js

request.js

用于创建axios,并在请求/响应拦截时对需要传递的数据进行处理。

// 引入 axios
import axios from 'axios' // 使用前要先安装依赖:npm install axios

//引入 element-ui 信息
import {Message} from "element-ui";
import router from "@/router";

// 创建axios实例
const service = axios.create({ 
	// 这里可以放一下公用属性等。
	baseUrl: 'https://xxxx', // 用于配置请求接口公用部分,请求时会自动拼接在你定义的url前面。
	withCredentials: false, // 跨域请求时是否需要访问凭证
	timeout: 3 * 1000, // 请求超时时间
	headers: { // 请求头
		...
	}
})

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 这里可以进行请求加密等操作。如添加token,cookie,修改数据传输格式等。
    // 设置请求头
    config.headers.Accept = "application/json";
    config.headers["Content-Type"] = "application/json";
    // 获取 token 并设置 Authorization 头部
    let token =
      window.localStorage.getItem("token") ||
      window.sessionStorage.getItem("token");
    if (token) {
      config.headers["Authorization"] = "Bearer " + token;
    }
    // 添加自定义头部
    // config.headers["custom-Sumu"] = "xxxx";
    return config;
  },
  (error) => {
    console.log(error);
    return Promise.reject(error);
  }
);

service.interceptors.response.use(
  (response) => {
    // 对响应数据做处理
    return response;
  },
  (error) => {
    // 请求失败进行的操作
    if (error.response && error.response.status) {
      switch (error.response.status) {
        case 401:
          Message({
            type: "warning",
            message: "尚未登录,请登录!",
            offset: 54,
          });
          router.push("/login");
          break;
      }
    } else {
      return Promise.reject(error);
    }
  }
);

export default service;

http.js

import request from './request';

const http = {
	get(url, params, headers) {
		const config = {
			method: 'GET',
			url: url
			params: params ? params : {},
			headers: headers ? headers : {}
		}
		return request(config);	
	},
	post(url, data, headers) {
		const config = {
			method: 'POST',
			url: url
			data: data ? data : {},
			headers: headers ? headers : {}
		}
		return request(config);	
	}
}

二、定义存放接口目录(api),假设首页需请求接口,添加home.js

home.js

import http from '@/utils/http';

export function homeData(parmas){
	return http.get('/api/list', params, headers数据)
}

三、home.vue文件中使用。

import { homeData } from '@/api/home.js'
export default {
	methods: {
		fn() {
			const params = {
				...	
			}
			homeData(params).then(res => {
				console.log(res);	
			}).catch(err => {
				console.log(err);	
			})
		}
	}
}

标签:axios,封装,请求,headers,vue,error,return,config
From: https://www.cnblogs.com/sumu80/p/18245408

相关文章

  • java+vue3+el-tree实现树形结构操作
    基于springboot+vue3elementPlus实现树形结构数据的添加、删除和页面展示效果如下代码如下,业务部分可以自行修改java后台代码importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;importcom.daztk.mes.common.annotation.LogOperation;import......
  • 基于Java+Vue的智慧园区管理系统:推动新技术与办公场景的深度融合(源码分享)
     前言:智慧园区管理平台是一个集成了多种功能的综合性系统,旨在通过信息化、智能化手段提升园区的管理效率和服务质量。以下是针对系统的各个功能模块的简要描述:一、楼栋管理会务管理:管理园区内的会议预约、会议室使用等。园区信息:展示园区的基本信息,如位置、面积、规划等。......
  • 基于Java+Vue的企事业移动培训考试平台:提升员工能力,助力文化传递(源码分享)
    前言:企事业移动培训考试平台是一个集成多种功能的综合性平台,旨在为企业提供便捷、高效、灵活的在线培训和考试解决方案。以下是针对平台所列出的八个主要功能的详细解释:一、文档管理及在线预览允许企业上传、存储、管理和分享各种培训文档,如PPT、PDF、Word等。提供在线预览......
  • JsSIP+FreeSwitch+Vue实现WebRtc音视频通话
    效果让同事帮我测的,在两个电脑分别打开该页面,一个注册1007分机号,另一个注册1005,然后拨打视频电话依赖版本jssip:3.6.1freeswitch:1.10.5-release~64bitvue:2.6.12488错误解决在freeswitch配置文件sip_profiles/internal.xml中添加:<paramname="apply-can......
  • vue3 修改element-plus主题颜色(css版)
    vue3修改主题颜色_若依vue3改默认主题色-CSDN博客上面的是js修改-----------------------------------------------------------------------------------------------------------------------1.新建一个APPStyle.css文件代码/*8这里是要替换的样式,可以参开下面注释......
  • 国思RDIF.vNext全新低代码快速开发框架平台6.1版本发布(支持vue2、vue3)
    1、平台介绍RDIF.vNext,全新低代码快速开发集成框架平台,给用户和开发者最佳的.Net框架平台方案,为企业快速构建跨平台、企业级的应用提供强大支持。RDIF.vNext的前身是RDIFramework框架,RDIF(RapiddevelopIntegrateFramework,vNext代表全新下一代),全新设计,全新开发,代码量减......
  • vue3探索——在setup script中使用tsx语法
    vue3+ts+eslint配置tsxvite.config.ts安装@vitejs/plugin-vue-jsx#npmnpmi@vitejs/plugin-vue-jsx-D#yarnyarnadd@vitejs/plugin-vue-jsx-D#pnpmpnpmadd@vitejs/plugin-vue-jsx-D在vite.config.ts中使用……importvueJsxfrom'@vitejs/plugin-vue......
  • [vue2]深入理解vuex
    本节内容概述初始化仓库定义数据访问数据修改数据处理异步派生数据模块拆分案例-购物车概述vuex是一个vue的状态管理工具,状态就是数据场景某个状态在很多个组件使用(个人信息)多个组件共同维护一份数据(购物车)优势数据集中式管理数据响应式变化初始化仓库......
  • java基于Vue+Spring boot前后端分离架构开发的一套UWB技术高精度定位系统源码
    java基于Vue+Springboot前后端分离架构开发的一套UWB技术高精度定位系统源码系统采用UWB高精度定位技术,可实现厘米级别定位。UWB作为一种高速率、低功耗、高容量的新兴无线局域定位技术,目前应用主要聚焦在室内外精确定位。在工业自动化、物流仓储、电力巡检、煤矿施工、自动......
  • Vue2入门之超详细教程十八-自定义指令
    Vue2入门之超详细教程十四-自定义指令1、简介定义语法分为局部自定义指令和全局自定义指令配置对象中常用的3个回调bind:指令与蒜素被插入成功时调用inserted:指令所在元素被插入页面时被调用update:指令所在模板结构被重新解析时调用备注:指令定义时不加v-,但使用时......