nankai-cms-website-gov/.kit/translated/utils/request.js
2025-03-13 09:52:18 +08:00

80 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios from 'axios'
import { trim } from './util'
// 默认配置
axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8'
const axiosInstance = axios.create({
baseURL: '/api',
// 请求超时时间
timeout: 60000
})
// 添加请求拦截器
axiosInstance.interceptors.request.use(function (config) {
// 服务端调用,使用全路径
if (window === undefined) {
config.baseURL = import.meta.env.VITE_API_URL
}
// 导出处理
if (config.download === true) {
config.responseType = 'blob'
}
// 参数去空格
if (config.trim === true) {
if (config.data != null) {
config.data = trim(config.data)
}
if (config.params != null) {
config.params = trim(config.params)
}
}
return config
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
axiosInstance.interceptors.response.use(function (response) {
// 下载接口处理
if (response.headers['x-opera-type'] === 'download') {
if (response.config.responseType !== 'blob') {
return Promise.reject(new Error('下载接口返回类型错误请检查接口定义是否缺少download标识'))
}
// Blob类型数据导出下载文件时如果接口未正确执行返回类型为Blob
return new Promise((resolve, reject) => {
if (response.data.type !== 'application/json') {
resolve(response)
return
}
const blob = new Blob([response.data])
const fileReader = new FileReader()
// 读取Blob内容
fileReader.readAsText(blob, 'utf-8')
fileReader.onload = function () {
const result = JSON.parse(fileReader.result)
// 业务失败
if (!result.success) {
reject(result)
return
}
resolve(result)
}
})
}
// 对响应数据做点什么
if (response.data.success) {
return response.data.data
}
console.error('接口错误', response.data.message)
return Promise.reject(response.data)
}, function (error) {
if (error.response.status === 500) {
return Promise.reject(new Error('网络繁忙,请稍后再试!'))
}
// 对响应错误做点什么
return Promise.reject(error)
})
export default axiosInstance