@AllArgsConstructor
@Getter
public enum ErrorCode implements CodeInterFace {
SUCCESS("SUCCESS"),
// USER 가입 or 로그인
USER_ALREADY_EXISTS("USER_ALREADY_EXISTS"),
USER_SAVED_FAILED("USER_SAVED_FAILED"),
NOT_EXIST_USER("존재하지 않는 회원입니다"),
MIS_MATCH_PASSWORD("MIS_MATCH_PASSWORD"),
//JWT 토큰
TOKEN_IS_INVALID("TOKEN_IS_INVALID"),
ACCESS_TOKEN_IS_NOT_EXPIRED("TOKEN_IS_NOT_EXPIRED"),
TOKEN_IS_EXPIRED("TOKEN_IS_EXPIRED"),
//프로필 사진 업로드
EXTENSION_IS_INVALID("EXTENSION_IS_INVALID"),
SIZE_IS_INVALID("SIZE_IS_INVALID"),
CONTENT_TYPE_IS_INVALID("CONTENT_TYPE_IS_INVALID"),
IMAGE_SAVED_FAILED("IMAGE_SAVED_FAILED"),
EXCEED_IMAGE_LIMIT("EXCEED_IMAGE_LIMIT"),
NO_IMAGE_FAILED("NO_IMAGE_FAILED"),
//프로필 조회 or 등록
NOT_EXIST_PROFILE("프로필이 존재하지 않는 회원입니다"),
PROFILE_REGISTER_FAILED("PROFILE_REGISTER_FAILED"),
PROFILE_ALREADY_EXIST("PROFILE ALREADY EXIST"),
NOT_EXIST_PROFILE_RECORD("NOT EXIST PROFILE RECORD"),
NOT_AUTHORIZED_PROFILE("부적절한 프로필로 비활성화된 회원입니다"),
현재 이런식으로 커스텀 예외를 만들어서 사용하고 있다.
그런데, 클라이언트에서 이렇게만 보내지말고 각각 일반적인 의미의 Http 상태코드로 내려달라는 요청을 했다.
이렇게 해본 적이 없어서 하나씩 공부하면서 상태코드를 맵핑하기로 했다.
The 409 (Conflict) status code indicates that the request could not be completed due to a conflict with the current state of the target resource.
409코드는 타겟 리소스의 현재 상태와 충돌될 때 쓰는 응답 코드다. 이미 존재하는 리소스를 다시 만들려고 할 때 쓸 수 있다.
영한샘이 말해주신 걸 보면 특정 데이터가 없을 때는 404코드로 처리한다.
비밀번호를 잘못입력했을 경우 401 코드를 내려준다.
프로필 사진 때문에 ban이 된 회원의 활동은 403 forbidden을 내려준다.
매칭을 요청했는데 사진이나 프로필이 없는 경우(비즈니스 로직) 매칭 요청이 실패한다. 이때 422 UNPROCESSABLE_ENTITY를 내려준다.
광고 쿨타임이 아직 안 끝났을 때 요청을 보내면 429코드다.