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

예외처리 목록 작성 #24

Open
jkde7721 opened this issue Jan 5, 2023 · 2 comments
Open

예외처리 목록 작성 #24

jkde7721 opened this issue Jan 5, 2023 · 2 comments
Assignees
Labels
📄 Docs 문서 작성 및 수정 (README.md 등)

Comments

@jkde7721
Copy link
Member

jkde7721 commented Jan 5, 2023

작성 예시

예외 설명 상태 코드 에러 코드 이름 에러 코드 메시지
해당 대타근무 요청 id를 가진 대타근무 요청건을 찾을 수 없는 경우 NOT_FOUND SUBSTITUTEREQ_NOT_FOUND 해당 대타근무 요청건을 찾을 수 없습니다.
수락 또는 거절 상태인 대타근무 요청을 취소하려는 경우 BAD_REQUEST ALREADY_PROCESSED_REQ 이미 수락 혹은 거절된 요청이므로 취소할 수 없습니다.

상태 코드(HttpStatus) 정리

참고 문서
참고 블로그

  • 1xx(정보): 요청을 받았으며 프로세스를 계속 진행 (거의 사용X)
  • 2xx(성공): 클라이언트가 요청한 작업을 서버가 성공적으로 수행
  • 3xx(리다이렉션): 클라이언트가 요청한 리소스가 옮겨졌거나 삭제되어 기존 URL로는 더 이상 해당 리소스에 접근할 수 없고 다른 URL을 통해서 그 리소스에 접근해야 하는 경우
  • 4xx(클라이언트 오류): 클라이언트가 서버에게 보낸 요청이 잘못된 경우
  • 5xx(서버 오류): 서버가 유효한 요청에 대한 처리에 실패한 경우
상태 코드 번호 설명
OK 200 요청이 성공적으로 완료
CREATED 201 요청이 성공적으로 완료되었으며 그 결과 새로운 리소스가 생성됨 (일반적으로 POST 또는 일부 PUT 요청 시)
NO_CONTENT 204 요청이 성공적으로 완료되었으며 그 결과 요청과 관련되었던 컨텐츠가 삭제되어 존재하지 않음 (클라이언트는 해당 컨텐츠 더 이상 사용 불가)
MOVED_PERMANENTLY 301 HTTP 헤더의 Location 필드를 찾아보고 해당 필드가 존재할 경우 Location 필드에 담긴 URL로 자동 리다이렉션 수행
NOT_MODIFIED 304 클라이언트가 요청한 리소스가 이전 요청에 대한 응답과 비교해보았을 때 바뀌지 않음, 서버로부터 요청한 리소스를 받는 것이 아닌 자신이 캐싱해놓았던 리소스로 리다이렉션 (암묵적인 리다이렉션)
BAD_REQUEST 400 잘못된 문법으로 인해 서버가 요청을 이해할 수 없음
UNAUTHORIZED 401 인증되지 않은 사용자가 인증이 필요한 리소스를 요청하는 경우 ex. 로그인이 필요한 API를 비로그인 사용자가 호출한 경우
FORBIDDEN 403 클라이언트가 접근이 금지된 리소스를 요청, UNAUTHORIZED과 다른 점은 서버는 클라이언트가 누구인지 알고 있음
NOT_FOUND 404 요청받은 리소스를 찾을 수 없음
METHOD_NOT_ALLOWED 405 현재 리소스에 맞지 않는 메소드를 사용함
NOT_ACCEPTABLE 406 클라이언트가 요청하는 컨텐츠 타입(요청 시 Accept 필드에 명시)의 리소스가 서버에 존재하지 않음 (서버가 응답으로 줄 수 있는 리소스 중 해당 타입 없음)
REQUEST_TIMEOUT 408 클라이언트와 서버의 연결은 O, but 요청의 본문이 서버에 도착하지 않는 경우
TOO_MANY_REQUESTS 429 클라이언트가 서버에 너무 많은 요청을 보내는 경우
INTERNAL_SERVER_ERROR 500 서버에서 요청 처리 중 에러 발생

@jkde7721 jkde7721 added the 📄 Docs 문서 작성 및 수정 (README.md 등) label Jan 5, 2023
@jkde7721 jkde7721 pinned this issue Jan 5, 2023
@jkde7721
Copy link
Member Author

jkde7721 commented Jan 5, 2023

도메인 관련 예외

auth

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
해당 유저가 없는 경우 USER_NOT_FOUND NOT_FOUND 해당 유저를 찾을 수 없습니다.
토큰 재발급 시 access token이 유효하지 않은 경우 (by. 토큰 변조) INVALID_ACCESS_TOKEN BAD_REQUEST access token이 변조되어 유효하지 않습니다.
토큰 재발급 시 해당 user의 refresh token이 없는 경우 REFRESH_TOKEN_NOT_FOUND NOT_FOUND 해당 유저의 refresh token이 없습니다. 재로그인을 진행합니다.
토큰 재발급 시 refresh token이 유효하지 않은 경우 INVALID_REFRESH_TOKEN BAD_REQUEST refresh token이 일치하지 않습니다. 재로그인을 진행합니다.
인증되지 않은 유저가 인증이 필요한 api 호출하는 경우 (controller 전 filter에서 발생하는 에러로 global handler에서 처리 불가) UNAUTHORIZED Full authentication is required to access this resource

profile

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
현재 로그인한 이용자의 프로필이 없는 경우 PROFILE_NOT_FOUND NOT_FOUND 현재 프로필이 등록되어 있지 않습니다. 프로필 등록을 진행합니다.
해당 staff 프로필이 없는 경우 STAFF_PROFILE_NOT_FOUND_BY_ID NOT_FOUND 해당 알바생이 없습니다.
해당 이메일을 가진 staff 프로필이 없는 경우 STAFF_PROFILE_NOT_FOUND_BY_EMAIL NOT_FOUND 해당 이메일을 가진 알바생이 없습니다.
해당 워크스페이스의 boss 프로필이 없는 경우 BOSS_PROFILE_NOT_FOUND_BY_WORKSPACE NOT_FOUND 해당 워크스페이스의 사장님이 없습니다.

workspace

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
해당 워크스페이스가 없는 경우 WORKSPACE_NOT_FOUND NOT_FOUND 해당 워크스페이스가 없습니다.
이미 존재하는 워크스페이스와 사업자 번호가 같은 워크스페이스 생성 요청하는 경우 ALREADY_EXIST_WORKSPACE BAD_REQUEST 해당 사업자 번호의 워크스페이스가 이미 존재합니다.
해당 워크스페이스의 멤버인 알바를 다시 초대하는 경우 ALREADY_EXIST_STAFF_IN_WORKSPACE BAD_REQUEST 해당 알바는 이미 해당 워크스페이스의 멤버입니다.

schedule

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
해당 스케줄이 없는 경우 SCHEDULE_NOT_FOUND NOT_FOUND 해당 스케줄이 없습니다.
해당 알바가 해당 스케줄 날짜시간에 다른 스케줄이 이미 존재하는 경우 INVALID_SCHEDULE_WORKER BAD_REQUEST 해당 알바는 해당 스케줄 시간에 근무 불가합니다. 다른 알바를 선택합니다.
스케줄 상태가 BEFORE_WORK가 아닌 스케줄에 대해 취소 요청한 경우 INVALID_SCHEDULE_CANCEL BAD_REQUEST 스케줄 시작 전인 경우에만 취소 가능합니다.
(스케줄 시작 날짜시간 - 10분) 보다 전에 해당 스케줄에 대해 출근 요청한 경우 EARLY_SCHEDULE_START BAD_REQUEST 해당 스케줄 시작 10분 전부터 출근 가능합니다.
스케줄 종료 날짜시간 이후에 해당 스케줄에 대해 출근 요청한 경우 LATE_SCHEDULE_START BAD_REQUEST 해당 스케줄이 종료되어 출근 불가합니다.
해당 스케줄에 대해 출근하지 않은 상태로 퇴근 요청한 경우 INVALID_SCHEDULE_END BAD_REQUEST 출근 상태일 때에만 퇴근 가능합니다.

substituteReq

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
해당 id의 대타근무 요청건이 없는 경우 SUBSTITUTEREQ_NOT_FOUND NOT_FOUND 해당 대타근무 요청건을 찾을 수 없습니다.
이미 상대방에 의해 수락 혹은 거절된 대타근무 요청을 취소할 경우 ALREADY_PROCESSED_REQ BAD_REQUEST 이미 수락 혹은 거절된 요청이므로 취소할 수 없습니다.

notification

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
해당 유저의 알림을 위한 디바이스 토큰이 없는 경우 NOTIFICATION_NOT_FOUND NOT_FOUND 해당 유저의 알림정보를 찾을 수 없습니다. 디바이스 토큰을 등록합니다.

invitation

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
해당 알바에게 보낸 유효한 워크스페이스 초대장이 이미 존재하는 경우 ALREADY_EXIST_VALID_INVITATION BAD_REQUEST 유효한 초대장이 이미 존재합니다.
해당 초대장이 없는 경우 INVITATION_NOT_FOUND NOT_FOUND 해당 초대장을 찾을 수 없습니다.
해당 초대장이 만료된 경우 EXPIRED_INVITATION_LINK BAD_REQUEST 만료된 초대 링크입니다.

공통

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
Boss가 Staff API 요청하는 경우 또는 Staff가 Boss API 요청하는 경우 FORBIDDEN Forbidden
DTO validation을 만족하지 않는 요청이 들어온 경우 INVALID_REQUEST_FIELD BAD_REQUEST 유효하지 않은 요청 필드입니다.

@jkde7721 jkde7721 unpinned this issue Jan 31, 2023
@jkde7721
Copy link
Member Author

jkde7721 commented Mar 31, 2023

외부 API 관련 예외

social login

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
로그인 시 프론트로부터 전달받은 토큰이 유효하지 않은 경우 INVALID_SOCIAL_TOKEN INTERNAL_SERVER_ERROR 유효하지 않은 소셜 토큰입니다.

mail

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
해당 이메일에 대한 메일 발송에 실패한 경우 EMAIL_SEND_ERROR INTERNAL_SERVER_ERROR 이메일 발송에 실패하였습니다.

google calendar oauth

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
구글 캘린더에 대한 접근 권한이 없는 경우 NOPERMISSION_TO_CALENDAR UNAUTHORIZED 해당 캘린더에 접근할 수 없습니다.

aws s3

예외 설명 에러 코드 이름 상태 코드 에러 코드 메시지
aws s3에 파일을 업로드하지 못한 경우 FILE_UPLOAD_ERROR INTERNAL_SERVER_ERROR 파일 업로드에 실패하였습니다.
업로드 요청 파일 이름에 확장자가 없는 경우 INVALID_FILE_NAME_FORM BAD_REQUEST 잘못된 형식의 파일 이름입니다. 파일 이름에 확장자가 포함되어야 합니다.
업로드 요청 파일 확장자가 유효하지 않는 경우 INVALID_IMAGE_FILE_EXTENSION BAD_REQUEST 잘못된 이미지 파일 확장자입니다. .png, .jpg, .jpeg 중 하나이어야 합니다.
삭제 요청 파일 URL에 파일 이름이 없는 경우 INVALID_FILE_URL_FORM BAD_REQUEST 잘못된 형식의 파일 URL입니다. / 문자 이후에 파일 이름이 포함되어야 합니다.

@COALBA-Graduation-Project COALBA-Graduation-Project locked and limited conversation to collaborators Mar 31, 2023
@jkde7721 jkde7721 pinned this issue Mar 31, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
📄 Docs 문서 작성 및 수정 (README.md 등)
Projects
None yet
Development

No branches or pull requests

2 participants