From b0b91c712a80e64c33f1c4f1b05828261e2b6382 Mon Sep 17 00:00:00 2001 From: keemsebeen Date: Mon, 3 Jun 2024 01:40:54 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20timeout=20Axios=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=20=EB=B0=9C=EC=83=9D=EC=8B=9C=20=EB=84=A4=ED=8A=B8=EC=9B=8C?= =?UTF-8?q?=ED=81=AC=20=EA=B0=9C=EC=84=A0=20toast=20=EB=9D=84=EC=9A=B0?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/index.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/apis/index.ts b/src/apis/index.ts index 9893651e..cd06f1f8 100644 --- a/src/apis/index.ts +++ b/src/apis/index.ts @@ -51,6 +51,7 @@ const api = axios.create({ baseURL: process.env.NEXT_PUBLIC_BASE_URL, timeout: 3000, }); + export function removeToken() { const cookies = new Cookies(); cookies.remove('token'); @@ -272,6 +273,7 @@ export async function createReport(formdata: FormData) { Authorization: 'Bearer ' + token, 'Content-Type': 'multipart/form-data', }, + timeout: 2000, }); } @@ -436,18 +438,23 @@ function expirationToken(error: AxiosError) { return Promise.reject(error); } -function fullfilledResponse(res: AxiosResponse) { +function fulfilledResponse(res: AxiosResponse) { return res; } function rejectedResponse(error: AxiosError) { if ( error.response?.data?.code === 401 && error.response?.data?.message == '유효하지 않은 토큰입니다.' - ) + ) { return expirationToken(error); + } + if (error.code === 'ECONNABORTED') { + toast.error('네트워크 환경을 확인해주세요.'); + return Promise.reject(error); + } Sentry.captureException(error); return Promise.reject(error); } -api.interceptors.response.use(fullfilledResponse, rejectedResponse); +api.interceptors.response.use(fulfilledResponse, rejectedResponse);