커스텀 예외
- 예외 메시지는 사용자에게 보여지는 정보기 때문에 예외 메시지로 정확한 오류 내용을 나타내는 것보다 예외 객체 이름으로 나타내는 것이 적절할 것 같음..
사용자 vs 인증
사용자와 인증의 기능이 밀접한 관련이 있다보니 둘을 혼동하여 쓰고 있더라구요.
특히나 API URL 에서 API 를 호출할 때 토큰을 받아오는 경우 앞에 /auth
를 붙이기로 하다보니 더 헷갈렸던 것 같습니다.
피드백을 보고 Controller 를 구분한 기준을 정리해보았습니다.
AuthController
- 인증 관련 로직이 있을 경우에 해당 컨트롤러에 위치
- 예) 로그인 -> 토큰 발급 기능
- 로그인은
사용자
테이블에서 정보를 확인한 후, 토큰
을 발급받으므로 CustomerService
와 AuthService
에서 각각 수행 후 반환 객체를 생성하였음
CustomerController
- 인증 관련 로직이 없을 경우에 해당 컨트롤러에 위치
- 예) 회원가입, 사용자 정보 조회, 사용자 정보 수정, 회원 탈퇴 등
- 회원가입을 제외한 나머지 기능은 토큰을 받으나 해당 토큰을 처리하는 로직이 따로 없어 CustomerController 에 두었음
테이블과 프로덕트 코드에서 중복적으로 확인하는 이유
테이블에 unique 설정을 해두었는데 CustomerService 에서 중복값이 있는지 확인하는 과정에 대해 정리해보았습니다.
테이블 unique 설정
- 디비에 접근할 수 있다면 장바구니 어플리케이션이 아닌 디비에 접근하여 올바르지 않은 값을 insert 및 update 할 수 있으므로 unique 설정 필요
프로덕트 코드 체크
- unique 설정이 걸려있는 테이블에서 중복값을 저장할 경우
Unique index or primary key violation
메시지를 가지는 JdbcSQLIntegrityConstraintViolationException
예외가 발생함 -> unique 설정 때문에 발생한 오류인지, 기본키가 중복되어 발생한 오류인지 알 수 없음