Commit 8ea46f63 by zhuzhequan

接口数据上报

parent a5b39b89
...@@ -3,35 +3,11 @@ import Axios from 'axios' ...@@ -3,35 +3,11 @@ import Axios from 'axios'
import { showError } from '@/utils/ui.ts' import { showError } from '@/utils/ui.ts'
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import {findRequestItemByUUID,deleteRequestByUUID,addRequestItem,getTimeDifferenceInMilliseconds} from './requestLog.ts'
const axios = Axios.create({ const axios = Axios.create({
baseURL: import.meta.env.VITE_API_BASE, baseURL: import.meta.env.VITE_API_BASE,
timeout: 60 * 60 * 1000, //半小时 timeout: 60 * 60 * 1000, //半小时
}) })
const apiRequestKey = 'apiRequestStorage'
const getRequestData = () => {
return JSON.parse(localStorage.getItem(apiRequestKey) || '[]')
}
const findRequestItemByUUID = (uuid: string) => {
const data = getRequestData()
return data.find((d: any) => d.uuid === uuid)
}
const deleteRequestByUUID = (uuid: string) => {
let data = getRequestData()
data= data.filter((d: any) => d.uuid !== uuid)
localStorage.setItem(apiRequestKey,JSON.stringify(data))
}
const addRequestItem = (item?:never) => {
const data = getRequestData()
data.push(item)
localStorage.setItem(apiRequestKey,JSON.stringify(data))
return data
}
const TOKEN_KEY = 'token' const TOKEN_KEY = 'token'
...@@ -52,8 +28,8 @@ axios.interceptors.request.use( ...@@ -52,8 +28,8 @@ axios.interceptors.request.use(
config.headers.timestamp = new Date().getTime() config.headers.timestamp = new Date().getTime()
config.headers.uuid = uuidv4().replace(/-/g, '') config.headers.uuid = uuidv4().replace(/-/g, '')
addRequestItem({ addRequestItem({
url: config.url, url: config.url || '',
method: config.method, method: config.method || '',
startTime: dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'), startTime: dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'),
uuid: config.headers.uuid uuid: config.headers.uuid
}) })
...@@ -67,19 +43,22 @@ axios.interceptors.response.use( ...@@ -67,19 +43,22 @@ axios.interceptors.response.use(
(response) => { (response) => {
// 1. 判断响应码 // 1. 判断响应码
const data = response.data const data = response.data
console.log(response)
const uuid = response.config?.headers?.uuid const uuid = response.config?.headers?.uuid
const item = findRequestItemByUUID(uuid) const item = findRequestItemByUUID(uuid)
item.url = `/api${response.config?.url}` item.url = `/api${response.config?.url}`
const fm = new FormData() const fm = new FormData()
for(const k in item || {}){ const processTime = response.headers['processtime']
fm.append(k, item[k]) const endTime = dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
const clientResponseTime = getTimeDifferenceInMilliseconds(item.startTime, endTime)
console.log(item)
if((clientResponseTime as number)>=3000){
fm.append('processTime', processTime)
fm.append('url', item.url)
fm.append('method', item.method)
fm.append('requestId', response.data.requestId)
fm.append('clientResponseTime', String(clientResponseTime)+'ms')
navigator.sendBeacon('/api/factory/ops/report-data', fm)
} }
const processTime = response.headers['x-server-process-time']
fm.append('endTime', dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'))
fm.append('processTime', processTime)
navigator.sendBeacon('/api/factory/ops/report-data', fm)
console.log(uuid)
deleteRequestByUUID(uuid) deleteRequestByUUID(uuid)
if (data && typeof data === 'object' && typeof data.code === 'number') { if (data && typeof data === 'object' && typeof data.code === 'number') {
// token 过期 // token 过期
......
export interface ApiRequestItem {
url: string;
method: string;
startTime: string;
uuid: string;
}
const apiRequestKey = 'apiRequestStorage'
export const getRequestData = () => {
return JSON.parse(localStorage.getItem(apiRequestKey) || '[]')
}
export const getTimeDifferenceInMilliseconds = (time1:string, time2:string): number | null => {
const date1 = new Date(time1);
const date2 = new Date(time2);
// 检查日期是否有效
if (isNaN(date1.getTime()) || isNaN(date2.getTime())) {
return null; // 返回 null 或者其他你想要的错误处理
}
return date2.getTime() - date1.getTime();
}
export const findRequestItemByUUID = (uuid: string) => {
const data = getRequestData()
return data.find((d: ApiRequestItem) => d.uuid === uuid)
}
export const deleteRequestByUUID = (uuid: string) => {
let data = getRequestData()
data= data.filter((d: ApiRequestItem) => d.uuid !== uuid)
localStorage.setItem(apiRequestKey,JSON.stringify(data))
}
export const addRequestItem = (item?:ApiRequestItem) => {
const data = getRequestData()
data.push(item)
localStorage.setItem(apiRequestKey,JSON.stringify(data))
return data
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment