Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat] 어드민 API 예외처리 #147

Merged
merged 2 commits into from
Aug 13, 2024
Merged

[Feat] 어드민 API 예외처리 #147

merged 2 commits into from
Aug 13, 2024

Conversation

jhj2713
Copy link
Member

@jhj2713 jhj2713 commented Aug 13, 2024

🖥️ Preview

스크린샷 2024-08-13 오후 2 26 42

close #145

✏️ 한 일

  • 로그인 토큰이 만료된 경우
  • 추첨 안 했는데 추첨 이벤트 당첨자 목록에 들어간 경우

❗️ 발생한 이슈 (해결 방안)

기존에 로그인이 실패해도 token이 undefined로 들어가고 메인 페이지로 접속이 가능한 문제가 있었습니다. 원인은 fetch에 있었는데, fetch는 오류 응답을 자동으로 예외로 처리하지 않습니다. fetch API는 HTTP 오류 상태 코드(예: 400, 404, 500)를 네트워크 오류로 취급하지 않고, 성공적인 응답으로 간주해서 error를 throw하지 않습니다.

따라서 일반적으로 발생하는 오류를 try/catch하는 코드 뿐만 아니라 status code를 확인하는 코드가 필요했습니다.

status를 확인하기 위해서 respones.ok(200-299 사이의 status를 정상적인 응답으로 간주)를 사용했습니다.

export async function fetchWithTimeout(url: string, options: RequestInit = {}, timeout = 5000) {
    const controller = new AbortController();
    const id = setTimeout(() => controller.abort(), timeout);
    options.signal = controller.signal;

    const response = await fetch(url, options);
    clearTimeout(id);

    if (!response.ok) {
        throw new Error(response.statusText);
    }

    return response;
}

위와 같이 response.ok가 아닌 경우 error를 throw하게 해서 try/catch 문에 걸리도록 했습니다.

❓ 논의가 필요한 사항

@jhj2713 jhj2713 added fix 버그가 발생 feat 기능 구현 labels Aug 13, 2024
@jhj2713 jhj2713 requested a review from sooyeoniya August 13, 2024 05:30
@jhj2713 jhj2713 self-assigned this Aug 13, 2024
Copy link

빌드를 성공했습니다! 🎉

1 similar comment
Copy link

빌드를 성공했습니다! 🎉

Copy link
Member

@sooyeoniya sooyeoniya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋아용 :) 저도 상태코드 예외처리 오류 어제 고쳤는데!! 완전 공감됩니다 ㅎㅎ

@jhj2713 jhj2713 merged commit bfb034e into dev Aug 13, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat 기능 구현 fix 버그가 발생
Projects
None yet
Development

Successfully merging this pull request may close these issues.

API 예외처리 추가
2 participants