axios在实际项目中的封装

axios在实际项目中的封装

1、axios的封装

js 复制代码
import axios from 'axios'
import { message } from 'ant-design-vue'
import {
	getLocalToken,
	removeLocalToken
} from '@/utils/auth'

const service = axios.create({
	timeout: 300000 // 请求超时
})

//请求拦截
service.interceptors.request.use(
	(config) => {
		const token = getLocalToken() // 获取在本地存储的token 
		config.headers['Authorization'] = `Bearer ${token}`
		config.headers['APPID'] = 'dataValidApp'
		return config
	},
	(error) => {
		// 请求错误
		return Promise.reject(error)
	}
)

// 响应拦截
service.interceptors.response.use(
	// 获取响应状态
	(response) => {
		const res = response.data
		if (res.code == 401) {
			removeToken()
			removeLocalToken()
			message.error(res.message || 'Error')
			const host = location.host
			const protocol = location.protocol
			window.location.href = `${protocol}//${host}/base/#/login`
		} else if (res.code != 200) {
			message.error(res.message || 'Error')
			return Promise.reject(res.message) // 返回接口返回的错误信息
		} else {
			return res
		}
	},
	(err) => {
		if (err && err.response) {
			switch (err.response.status) {
				case 400:
					err.message = '请求错误'
					break
				case 401:
					err.message = '未授权,请登录'
					break
				case 403:
					err.message = '拒绝访问'
					break
				case 404:
					err.message = `请求地址出错: ${err.response.config.url}`
					break
				case 408:
					err.message = '请求超时'
					break
				case 500:
					err.message = '服务器内部错误'
					break
				case 501:
					err.message = '服务未实现'
					break
				case 502:
					err.message = '网关错误'
					break
				case 503:
					err.message = '服务不可用'
					break
				case 504:
					err.message = '网关超时'
					break
				case 505:
					err.message = 'HTTP版本不受支持'
					break
				default:
			}
		}
		message.error(err.message || 'Error')
		return Promise.reject(err) // 返回接口返回的错误信息
	}
)

export default service

2、对于封装的axios的使用

js 复制代码
import request from '@/utils/request'

export function login(data) {
	return request({
		url: '/qf-admin/user/login',
		method: 'post',
		data
	})
}
export function getInfo(params) {
	return request({
		url: '/qf-admin/user/info',
		method: 'get',
		params
	})
}

以上封装可直接粘贴到代码中进行使用

相关推荐
JuneXcy18 分钟前
11.web api 2
前端·javascript·html
zYear24 分钟前
Elpis 全栈应用框架-- 总结
前端·javascript
Juchecar1 小时前
分析:将现代开源浏览器的JavaScript引擎更换为Python的可行性与操作
前端·javascript·python
极客小俊1 小时前
Font Awesome 一个基于CSS和LESS的免费图标库工具包
前端
yinuo1 小时前
CSS基础动画keyframes
前端
一条上岸小咸鱼2 小时前
Kotlin 基本数据类型(一):Numbers
android·前端·kotlin
前端小巷子2 小时前
Vue 事件绑定机制
前端·vue.js·面试
uhakadotcom3 小时前
开源:subdomainpy快速高效的 Python 子域名检测工具
前端·后端·面试
爱加班的猫3 小时前
Node.js 中 require 函数的原理深度解析
前端·node.js
用户8165111263973 小时前
WWDC 2025 Build a SwiftUI app with the new design
前端