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; diff --git a/src/components/board/BoardProfile.vue b/src/components/board/BoardProfile.vue index 2125e95..7a4e538 100644 --- a/src/components/board/BoardProfile.vue +++ b/src/components/board/BoardProfile.vue @@ -21,8 +21,28 @@