Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
factory_front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qinjianhui
factory_front
Commits
8ea46f63
Commit
8ea46f63
authored
Mar 27, 2026
by
zhuzhequan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
接口数据上报
parent
a5b39b89
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
35 deletions
+53
-35
src/api/axios.ts
+14
-35
src/api/requestLog.ts
+39
-0
No files found.
src/api/axios.ts
View file @
8ea46f63
...
@@ -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 过期
...
...
src/api/requestLog.ts
0 → 100644
View file @
8ea46f63
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
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment