From 6704f5531aef238454448a87918038cd166122d4 Mon Sep 17 00:00:00 2001 From: yoon Date: Mon, 10 Feb 2025 14:41:37 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=91=EB=8B=B5=20=EC=9D=B8=ED=84=B0?= =?UTF-8?q?=EC=85=89=ED=84=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/axios-interceptor.js | 42 +++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/src/common/axios-interceptor.js b/src/common/axios-interceptor.js index 08bf871..f60b3d8 100644 --- a/src/common/axios-interceptor.js +++ b/src/common/axios-interceptor.js @@ -1,5 +1,5 @@ import axios from "axios"; -import router from "@/router/index"; +import { useToastStore } from '@s/toastStore'; const $api = axios.create({ baseURL: 'http://localhost:10325/api/', @@ -30,13 +30,41 @@ $api.interceptors.request.use( // 응답 인터셉터 추가하기 $api.interceptors.response.use( + function (response) { - // 2xx 범위에 있는 상태 코드는 이 함수를 트리거 합니다. - // 응답 데이터가 있는 작업 수행 + // 2xx 범위의 응답 처리 return response; - }, function (error) { - // 2xx 외의 범위에 있는 상태 코드는 이 함수를 트리거 합니다. - // 응답 오류가 있는 작업 수행 + }, + function (error) { + const toastStore = useToastStore() + // 오류 응답 처리 + if (error.response) { + switch (error.response.status) { + case 401: + toastStore.onToast('아이디 혹은 비밀번호가 틀렸습니다.', 'e'); + break; + case 403: + toastStore.onToast('접근 권한이 없습니다.', 'e'); + break; + case 404: + toastStore.onToast('요청한 페이지를 찾을 수 없습니다.', 'e'); + break; + case 500: + toastStore.onToast('서버 오류가 발생했습니다.', 'e'); + break; + default: + toastStore.onToast('알 수 없는 오류가 발생했습니다.', 'e'); + } + } else if (error.request) { + // 요청이 전송되었으나 응답을 받지 못한 경우 + toastStore.onToast('서버와 통신할 수 없습니다.', 'e'); + } else { + // 요청 설정 중에 오류가 발생한 경우 + toastStore.onToast('요청 중 오류가 발생했습니다.', 'e'); + } + return Promise.reject(error); - }); + } +); + export default $api;