|
| 1 | +export const API_ERROR_CODE = { |
| 2 | + INTERNAL_SERVER_ERROR: 'INTERNAL_SERVER_ERROR', |
| 3 | + INVALID_INPUT_VALUE: 'INVALID_INPUT_VALUE', |
| 4 | + ACCESS_DENIED: 'ACCESS_DENIED', |
| 5 | + USER_NOT_FOUND: 'USER_NOT_FOUND', |
| 6 | + INVALID_PASSWORD: 'INVALID_PASSWORD', |
| 7 | + EMAIL_ALREADY_EXISTS: 'EMAIL_ALREADY_EXISTS', |
| 8 | + NICKNAME_ALREADY_EXISTS: 'NICKNAME_ALREADY_EXISTS', |
| 9 | + INVALID_REFRESH_TOKEN: 'INVALID_REFRESH_TOKEN', |
| 10 | + REFRESH_TOKEN_EXPIRED: 'REFRESH_TOKEN_EXPIRED', |
| 11 | + REFRESH_TOKEN_REUSE_DETECTED: 'REFRESH_TOKEN_REUSE_DETECTED', |
| 12 | + POST_NOT_FOUND: 'POST_NOT_FOUND', |
| 13 | + EMPTY_CONTENT: 'EMPTY_CONTENT', |
| 14 | + COMMENT_NOT_FOUND: 'COMMENT_NOT_FOUND', |
| 15 | + SELF_FOLLOW_NOT_ALLOWED: 'SELF_FOLLOW_NOT_ALLOWED', |
| 16 | +} as const |
| 17 | + |
| 18 | +export type ApiErrorCode = (typeof API_ERROR_CODE)[keyof typeof API_ERROR_CODE] |
| 19 | + |
| 20 | +type ApiErrorEntry = { |
| 21 | + status: number |
| 22 | + message: string |
| 23 | +} |
| 24 | + |
| 25 | +export const API_ERROR_INFO: Record<ApiErrorCode, ApiErrorEntry> = { |
| 26 | + [API_ERROR_CODE.INTERNAL_SERVER_ERROR]: { |
| 27 | + status: 500, |
| 28 | + message: '서버 내부 에러가 발생했습니다.', |
| 29 | + }, |
| 30 | + [API_ERROR_CODE.INVALID_INPUT_VALUE]: { |
| 31 | + status: 400, |
| 32 | + message: '입력값이 올바르지 않습니다.', |
| 33 | + }, |
| 34 | + [API_ERROR_CODE.ACCESS_DENIED]: { |
| 35 | + status: 403, |
| 36 | + message: '접근 권한이 없습니다.', |
| 37 | + }, |
| 38 | + [API_ERROR_CODE.USER_NOT_FOUND]: { |
| 39 | + status: 404, |
| 40 | + message: '존재하지 않는 회원입니다.', |
| 41 | + }, |
| 42 | + [API_ERROR_CODE.INVALID_PASSWORD]: { |
| 43 | + status: 401, |
| 44 | + message: '비밀번호가 일치하지 않습니다.', |
| 45 | + }, |
| 46 | + [API_ERROR_CODE.EMAIL_ALREADY_EXISTS]: { |
| 47 | + status: 409, |
| 48 | + message: '이미 가입된 이메일입니다.', |
| 49 | + }, |
| 50 | + [API_ERROR_CODE.NICKNAME_ALREADY_EXISTS]: { |
| 51 | + status: 409, |
| 52 | + message: '이미 가입된 닉네임입니다.', |
| 53 | + }, |
| 54 | + [API_ERROR_CODE.INVALID_REFRESH_TOKEN]: { |
| 55 | + status: 401, |
| 56 | + message: '인증 정보가 유효하지 않습니다.', |
| 57 | + }, |
| 58 | + [API_ERROR_CODE.REFRESH_TOKEN_EXPIRED]: { |
| 59 | + status: 401, |
| 60 | + message: '인증 정보가 만료되었습니다.', |
| 61 | + }, |
| 62 | + [API_ERROR_CODE.REFRESH_TOKEN_REUSE_DETECTED]: { |
| 63 | + status: 401, |
| 64 | + message: '재발급 토큰이 재사용되었습니다.', |
| 65 | + }, |
| 66 | + [API_ERROR_CODE.POST_NOT_FOUND]: { |
| 67 | + status: 404, |
| 68 | + message: '게시글을 찾을 수 없습니다.', |
| 69 | + }, |
| 70 | + [API_ERROR_CODE.EMPTY_CONTENT]: { |
| 71 | + status: 400, |
| 72 | + message: '내용이 비어 있습니다.', |
| 73 | + }, |
| 74 | + [API_ERROR_CODE.COMMENT_NOT_FOUND]: { |
| 75 | + status: 404, |
| 76 | + message: '댓글을 찾을 수 없습니다.', |
| 77 | + }, |
| 78 | + [API_ERROR_CODE.SELF_FOLLOW_NOT_ALLOWED]: { |
| 79 | + status: 400, |
| 80 | + message: '자기 자신은 팔로우할 수 없습니다.', |
| 81 | + }, |
| 82 | +} |
0 commit comments