Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 21 additions & 6 deletions src/libs/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,36 @@ request.interceptors.response.use(
return res
},
async (error) => {
if (!error.config.retryCount) {
// 요청에 재시도 횟수를 추적하는 속성이 없으면 초기화
error.config.retryCount = 0
}

if (error.response.status === 403) {
const { setToast } = useToastify()

try {
error.config.retryCount += 1
if (error.config.retryCount >= 3) {
throw new Error('예외 발생!')
}
const getRefreshToken = await refreshApi()
const prevRequest = error.config
prevRequest.headers.Authorization = `Bearer ${getRefreshToken.appToken}`
setItem('token', getRefreshToken.appToken)
return request(prevRequest)
} catch {
setToast({
comment: '로그인을 다시 진행해주세요.',
type: 'info'
})
await logoutApi()
throw new Error('failed to request refresh token')
if (error.config.retryCount >= 3) {
window.location.href = '/login'
localStorage.removeItem('token')
} else {
setToast({
comment: '로그인을 다시 진행해주세요.',
type: 'info'
})
await logoutApi()
throw new Error('failed to request refresh token')
}
}
}
}
Expand Down