Merge branch 'main' into style
This commit is contained in:
commit
900d1d21a5
@ -40,7 +40,31 @@ $api.interceptors.response.use(
|
|||||||
function (response) {
|
function (response) {
|
||||||
const loadingStore = useLoadingStore();
|
const loadingStore = useLoadingStore();
|
||||||
loadingStore.stopLoading();
|
loadingStore.stopLoading();
|
||||||
// 2xx 범위의 응답 처리
|
|
||||||
|
// 로그인 실패, 커스텀 에러 응답 처리 (status는 200 success가 false인 경우)
|
||||||
|
if (response.data && response.data.success === false) {
|
||||||
|
const toastStore = useToastStore();
|
||||||
|
const errorCode = response.data.code;
|
||||||
|
const errorMessage = response.data.message || '알 수 없는 오류가 발생했습니다.';
|
||||||
|
|
||||||
|
// 로그인 요청일 경우 (헤더에 isLogin이 true로 설정된 경우)
|
||||||
|
if (response.config.headers && response.config.headers.isLogin) {
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 서버에서 보낸 메시지 사용
|
||||||
|
toastStore.onToast(errorMessage, 'e');
|
||||||
|
|
||||||
|
// 특정 에러 코드에 대한 추가 처리만 수행
|
||||||
|
if (errorCode === 'USER_NOT_FOUND') {
|
||||||
|
router.push('/login');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 오류 응답 반환
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 일반 성공 응답 처리
|
||||||
return response;
|
return response;
|
||||||
},
|
},
|
||||||
function (error) {
|
function (error) {
|
||||||
@ -48,17 +72,24 @@ $api.interceptors.response.use(
|
|||||||
loadingStore.stopLoading();
|
loadingStore.stopLoading();
|
||||||
const toastStore = useToastStore();
|
const toastStore = useToastStore();
|
||||||
|
|
||||||
// 오류 응답 처리
|
// 로그인 요청 별도 처리 (헤더에 isLogin이 true로 설정된 경우)
|
||||||
if (error.response) {
|
if (error.config && error.config.headers && error.config.headers.isLogin) {
|
||||||
|
// 로그인 페이지 오류 토스트 메시지 표시 X
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 에러 응답에 커스텀 메시지가 포함되어 있다면 해당 메시지 사용
|
||||||
|
if (error.response && error.response.data && error.response.data.message) {
|
||||||
|
toastStore.onToast(error.response.data.message, 'e');
|
||||||
|
} else if (error.response) {
|
||||||
|
// 기본 HTTP 에러 처리
|
||||||
switch (error.response.status) {
|
switch (error.response.status) {
|
||||||
case 400:
|
case 400:
|
||||||
toastStore.onToast('잘못된 요청입니다.', 'e');
|
toastStore.onToast('잘못된 요청입니다.', 'e');
|
||||||
router.push('/error/400'); // 🚀 400 에러 발생 시 자동 이동
|
router.push('/error/400');
|
||||||
break;
|
break;
|
||||||
case 401:
|
case 401:
|
||||||
if (!error.config.headers.isLogin) {
|
toastStore.onToast('인증이 필요합니다.', 'e');
|
||||||
// toastStore.onToast('인증이 필요합니다.', 'e');
|
|
||||||
}
|
|
||||||
router.push('/login');
|
router.push('/login');
|
||||||
break;
|
break;
|
||||||
case 403:
|
case 403:
|
||||||
@ -76,10 +107,8 @@ $api.interceptors.response.use(
|
|||||||
toastStore.onToast('알 수 없는 오류가 발생했습니다.', 'e');
|
toastStore.onToast('알 수 없는 오류가 발생했습니다.', 'e');
|
||||||
}
|
}
|
||||||
} else if (error.request) {
|
} else if (error.request) {
|
||||||
// 요청이 전송되었으나 응답을 받지 못한 경우
|
|
||||||
toastStore.onToast('서버와 통신할 수 없습니다.', 'e');
|
toastStore.onToast('서버와 통신할 수 없습니다.', 'e');
|
||||||
} else {
|
} else {
|
||||||
// 요청 설정 중에 오류가 발생한 경우
|
|
||||||
toastStore.onToast('요청 중 오류가 발생했습니다.', 'e');
|
toastStore.onToast('요청 중 오류가 발생했습니다.', 'e');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,4 +116,5 @@ $api.interceptors.response.use(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
export default $api;
|
export default $api;
|
||||||
|
|||||||
@ -71,17 +71,17 @@
|
|||||||
remember: remember.value,
|
remember: remember.value,
|
||||||
}, { headers: { isLogin: true } })
|
}, { headers: { isLogin: true } })
|
||||||
.then(async res => {
|
.then(async res => {
|
||||||
if (res.status === 200) {
|
// 로그인 실패 확인 (success가 false인 경우)
|
||||||
|
if (res.data && res.data.success === false) {
|
||||||
|
// 로그인 실패 시 에러 메시지 표시
|
||||||
|
errorMessage.value = res.data.message || '로그인에 실패했습니다.';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 로그인 성공 처리
|
||||||
userStore.userInfo();
|
userStore.userInfo();
|
||||||
await nextTick();
|
await nextTick();
|
||||||
router.push('/')
|
router.push('/');
|
||||||
}
|
})
|
||||||
}).catch(error => {
|
|
||||||
if (error.response) {
|
|
||||||
error.config.isLoginRequest = true;
|
|
||||||
errorMessage.value = error.response.data.message;
|
|
||||||
console.clear();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user