Files
coinbus/yq/src/api/http.js
2026-01-16 10:32:27 +08:00

419 lines
9.7 KiB
JavaScript

import axios from 'axios'
import { Message } from 'element-ui'
import { Loading } from 'element-ui';
import CancelTokens from './CancelTokens'
const baseURL = '/api' //代理接口的名称
import { $addStorageEvent } from '../util/processingData'
//不需要带token 匿名访问的接口
const noTokenUrl = [
`/marketall/btc/address`,
`/marketall/list/interface?req=price&`,
`/marketall/BTC/csupply`,
`/marketall/btc/mintusd`,
`/marketall/btc/marketcap`,
`/marketall/BTC/mvrv`,
`/marketall/BTC/btcbigtxcount`,
`/marketall/BTC/bigamountvout`,
`/marketall/BTC/arh99`,
`/marketall/BTC/arh99day`,
`/marketall/BTC/jzr60`,
`/marketall/BTC/jzr60day`,
`/marketall/BTC/ma730`,
`marketall/BTC/ma730day`,
`/marketall/ETH/csupply`,
`/marketall/ETH/reward`,
`/marketall/eth/ETHVolume`,
`/marketall/eth/ETHFees`,
`/marketall/eth/address`,
`/marketall/ETH/ethbigtxcount`,
`/marketall/ETH/ethbigtx`,
`/eth/ethTopAddrList`,
`/marketall/ETH/tronUsdtVolume`,
`/marketall/eth/usdtVolume`,
`/marketall/eth/usdcVolume`,
`/marketall/ETH/tronUsdcVolume`,
`/marketall/market/NDAQohlc`,
`/marketall/market/NDAQma`,
]
let overtime = "" //同页面多次请求超时只报错一次
window.addEventListener("setItem", () => {
overtime = localStorage.getItem("overtime");
});
Message.customClass = "messageClass"
let message = '' //登录过期控制只提示一次报错
//开发环境 development
if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL = 'http://10.168.2.197:7001'
// axios.defaults.baseURL = 'https://13.214.133.132:11447'
// axios.defaults.baseURL = 'http://10.168.2.125:7101'
axios.defaults.baseURL = 'https://coinbus.cc/api/v1'
}
//生产环境 production
if (process.env.NODE_ENV == 'production') {
axios.defaults.baseURL = 'https://coinbus.cc/api/v1'
// xios.defaults.baseURL = 'https://13.214.133.132:11447'
}
//测试环境
if (process.env.NODE_ENV === "staging") {
axios.defaults.baseURL = "https://coinbus.cc/api/v1"
}
//创建一个axios对象
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 1000,// 10000
});
// 添加请求拦截器(post)
service.interceptors.request.use( config =>{
if (config.url.includes('/fapi/v1/fundingRate') || config.url.includes('/fapi/v1/openInterest') || config.url.includes('/futures/data/takerlongshortRatio')) {
config.baseURL = baseURL
// config.baseURL = `https://fapi.binance.com`
// config.baseURL = 'https://binancezh.jp'
}
else if(config.url.includes('transfer/endOrder')){
config.timeout = 60000//充值确认接口单独设置响应时间1分钟
}else if(config.url.includes('levelUp')){
config.timeout = 30000//消费升级接口改为30秒
}else{
config.timeout = 10000
}
// token
if (!noTokenUrl.includes(config.url)) {
const token = localStorage.token;
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
}
return config
},error=> {
// if (error.code == "ECONNABORTED") {
// console.log(overtime,"几个都降低");
// if (!overtime) {
// overtime ="请求超时"
// Message({//请求超时
// showClose: true,
// message: window.vm.$i18n.t('login.timeout'),
// type: 'error',
// customClass: "messageClass",
// duration: 10000,
// });
// }
// }
// if (error.response.status >= 500) {//服务器错误
// console.log("甲方劲夫劲夫附件");
// Message({
// showClose: true,
// message: window.vm.$i18n.t('login.server'),
// type: 'error',
// customClass: "messageClass"
// });
// }
// 对请求错误做些什么
return Promise.reject(error)
})
// 添加请求拦截器
// token注入
axios.interceptors.request.use(function (config) {
if (config.url.includes('/fapi/v1/fundingRate') || config.url.includes('/fapi/v1/openInterest') || config.url.includes('/futures/data/takerlongshortRatio')) {
config.baseURL = baseURL
// config.baseURL = `https://fapi.binance.com`
// config.baseURL = 'https://binancezh.jp'
}
// config.headers={
// appid:"565656"
// }w'i'zhi
// token
if (!noTokenUrl.includes(config.url)) {
const token = localStorage.token;
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
}
return config
}, (error) => {
// 对请求错误做些什么
return Promise.reject(error)
})
//响应超时的时间
axios.defaults.timeout = 10000;
service.defaults.timeout = 10000;
// 设置请求次数,请求的间隙
axios.defaults.retry = 1;
axios.defaults.retryDelay = 1000;
var axiosResError = ""
// 添加响应拦截器
axios.interceptors.response.use(
res => {
// console.log(res,"响应数据111");
if (res.config.baseURL !== "https://fapi.binance.com") {
if (res.data.code == 421) {//登录过期删除token 421
//清空就是拦截到过期就删除了token 把两外两个存成空
console.log("登录过期");
localStorage.removeItem("token");
$addStorageEvent(1, "username", '')
$addStorageEvent(1, "loginTime", '')
localStorage.setItem("identity", JSON.stringify({}))
$addStorageEvent(1, "dialogLoginVisible",JSON.stringify(true) );//弹出登录
if(!message){
message = res.data.msg
Message({
message: res.data.msg,
type: 'warning',
customClass: "messageClass",
duration: 3000,
showClose: true,
});
}
}else if(res.data.code == 401){//登录才能查看的页面
if (!overtime) {
overtime ="登录才能查看的页面"
Message({
message: window.vm.$i18n.t('login.viewPage'),
type: 'error',
customClass: "messageClass",
showClose: true,
});
}
}else if(res.data.code !== 200){
console.log(`!== 200`,res);
Message({
message: res.data.msg,
type: 'error',
customClass: "messageClass"
});
}
}
return res;
}, error => {
if (error.code == "ECONNABORTED") {
if (!overtime) {
overtime ="请求超时"
Message({//请求超时
showClose: true,
message: window.vm.$i18n.t('login.timeout'),
type: 'error',
customClass: "messageClass",
showClose: true,
duration: 4000,
});
}
}
console.log('err' + error)
let { message } = error;
if (message == "Network Error") {//后端接口连接异常,请刷新重试
message = window.vm.$i18n.t('login.linkError')
}
else if (message.includes("timeout")) {//超时
message = window.vm.$i18n.t('login.timeout')
}
else if (message.includes("Request failed with status code")) {//系统接口异常5...
message = window.vm.$i18n.t('login.system') + message.substr(message.length - 3);
}
if (!overtime) {
overtime=message
Message({
message: message,
type: 'error',
showClose: true,
duration: 5 * 1000
})
}
// Message({
// message: message,
// type: 'error',
// duration: 5 * 1000
// })
return Promise.reject(error)
}
);
var serviceResError=""
// 添加响应拦截器 post
service.interceptors.response.use(
res=>{
if (res.data.code == 421) {//登录过期删除token 421
//清空就是拦截到过期就删除了token 把两外两个存成空
localStorage.removeItem("token");
$addStorageEvent(1, "username", '')
$addStorageEvent(1, "loginTime", '')
localStorage.setItem("identity", JSON.stringify({}))
$addStorageEvent(1, "dialogLoginVisible",JSON.stringify(true) );
console.log(message,"service 1 ");
if(!message){//登录过期 控制报错信息只提示一次
message = res.data.msg
Message({
message: res.data.msg,
type: 'error',
customClass: "messageClass",
duration: 3000,
showClose: true,
});
}
}else if(res.data.code == 401){//登录才能查看的页面
if (!overtime) {
overtime=`登录才能查看的页面`
Message({
message: window.vm.$i18n.t('login.viewPage'),
type: 'error',
customClass: "messageClass",
showClose: true,
});
}
}else if(res.data.code !== 200){
console.log(`!== 200`,res);
Message({
message: res.data.msg,
type: 'error',
customClass: "messageClass",
showClose: true,
});
}
return res;
},
error=>{
if (error.code == "ECONNABORTED") {
if (!overtime) {
overtime ="请求超时"
Message({//请求超时
showClose: true,
message: window.vm.$i18n.t('login.timeout'),
type: 'error',
customClass: "messageClass",
showClose: true,
duration: 4000,
});
}
}
console.log('err5555555555555' + error)
let { message } = error;
if (message == "Network Error") {
message = window.vm.$i18n.t('login.linkError')
}
else if (message.includes("timeout")) {
message = window.vm.$i18n.t('login.timeout')
}
else if (message.includes("Request failed with status code")) {
message = window.vm.$i18n.t('login.system') + message.substr(message.length - 3);
}
if (!overtime) {
overtime=message
Message({
message: message,
type: 'error',
showClose: true,
duration: 5 * 1000
})
}
// Message({
// message: message,
// type: 'error',
// duration: 5 * 1000
// })
return Promise.reject(error)
}
)
// 封装 get 方法
export function get(url, params) {
return new Promise((resolve, reject) => {
axios.get(url, {
params: params
}).then(res => {
resolve(res)
}).catch(err => {
reject(err)
return
})
})
}
// 封装 post方法
export function POST(url, data) {
return new Promise((resolve, reject) => {
axios.post(url, data)
.then(res => {
resolve(res)
})
.catch(err => {
reject(err)
})
})
}
// 封装 delete方法
export function Delete(url) {
return new Promise((resolve, reject) => {
axios.delete(url)
.then(res => {
resolve(res)
})
.catch(err => {
reject(err)
})
})
}
export default service;