-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
�feat#152/ 전역 에러 핸들러, 티켓 구매 관련 api 연결 (#154)
* feat: 대기열 진입 페이지 api 연결 * feat: 502 전역 에러핸들러 설정 정상 작동하는지 테스트 필요 * fix: waitClient baseUrl 상대경로로 수정 * feat: 메인페이지 문구 수정
- Loading branch information
Showing
10 changed files
with
144 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import React from 'react'; | ||
import { useNavigate } from 'react-router-dom'; | ||
|
||
class ErrorBoundary extends React.Component { | ||
constructor(props) { | ||
super(props); | ||
this.state = { hasError: false }; | ||
} | ||
|
||
static getDerivedStateFromError(error) { | ||
return { hasError: true }; | ||
} | ||
|
||
componentDidCatch(error, errorInfo) { | ||
console.error("Uncaught error:", error, errorInfo); | ||
} | ||
|
||
render() { | ||
if (this.state.hasError) { | ||
return <h1>오류가 발생했습니다.</h1>; | ||
} | ||
|
||
return this.props.children; | ||
} | ||
} | ||
|
||
export default ErrorBoundary; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import React from 'react'; | ||
import {XCircleIcon} from '@heroicons/react/solid'; | ||
|
||
const ErrorPage = () => { | ||
return ( | ||
|
||
<div className="flex flex-col items-center justify-center h-full px-4 py-16 sm:px-6 lg:px-8"> | ||
<div className="max-w-md w-full space-y-8 text-center"> | ||
<XCircleIcon className="mx-auto h-24 w-24 text-red-500"/> | ||
<h2 className="mt-6 text-3xl font-extrabold text-gray-900"> | ||
Oops! 문제가 발생했습니다 | ||
</h2> | ||
<p className="mt-2 text-sm text-gray-600"> | ||
죄송합니다. 현재 서버에 일시적인 문제가 발생했습니다. | ||
</p> | ||
<div className="mt-8 space-y-4"> | ||
<button | ||
onClick={() => window.location.reload()} | ||
className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" | ||
> | ||
페이지 새로고침 | ||
</button> | ||
|
||
<a href="/" | ||
className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm | ||
text-sm font-medium text-indigo-600 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 | ||
focus:ring-offset-2 focus:ring-indigo-500" | ||
> | ||
홈페이지로 돌아가기 | ||
</a> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
) | ||
; | ||
}; | ||
|
||
export default ErrorPage; |
16 changes: 16 additions & 0 deletions
16
frontend/src/components/exception/SetupAxiosInterceptors.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import axios from 'axios'; | ||
|
||
const setupAxiosInterceptors = () => { | ||
axios.interceptors.response.use( | ||
(response) => response, | ||
(error) => { | ||
if (error.response && error.response.status === 502) { | ||
// 502 에러 발생 시 특정 URL로 리다이렉트 | ||
window.location.href = 'https://www.naver.com'; | ||
} | ||
// return Promise.reject(error); | ||
} | ||
); | ||
}; | ||
|
||
export default setupAxiosInterceptors; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import axios from 'axios'; | ||
|
||
const waitClient = axios.create({ | ||
baseURL: '/api/v1', | ||
withCredentials: true, | ||
}); | ||
|
||
waitClient.interceptors.response.use( | ||
response => response, | ||
error => { | ||
if (error.response && error.response.status === 401) { | ||
localStorage.removeItem('isAuthenticated'); | ||
window.location.href = '/login'; | ||
} | ||
return Promise.reject(error); | ||
} | ||
); | ||
|
||
export default waitClient; |