본문 바로가기
Memo/BootCamp : TIL

[Pre Project] Day 10

by 달의 조각 2022. 11. 2.

기여한 내용

 

· User Dto에 유효성 검증 추가
· BusinessLogicException이 발생 시 응답 바디로 에러 메시지가 반환되지 않는 문제 수정
· 질문과 답변을 수정했을 때 수정 시간이 반영되지 않는 문제 해결
· 로그인 성공 시 응답 바디로 유저 정보를 전달하도록 구현

 


 

보강할 내용

 

기본 API의 요청과 응답을 점검하기

 

회고

 

  Spring MVC 패턴의 웹 애플리케이션에 Spring Security를 적용하는 핵심 기능의 구현이 끝나니 무엇을 검토하고 보강해야 할지 갈피를 잡지 못했다. 오늘은 프론트엔드 분들이 통신 테스트를 하며 요청하신 부분을 위주로 클라이언트의 API 요청에 관한 응답을 살피는 시간을 가졌다.

로그인에 필요한 비밀번호의 조건을 고민하다가 User 엔티티의 Dto에 아래와 같이 정규식을 통한 유효성 검증을 추가했다. 정규식에 대한 내용은 별도의 포스팅을 통해 정리할 예정이다.

@Pattern(regexp = "(?=.*[0-9])(?=.*[a-zA-Z])(?=.*\\W)(?=\\S+$).{8,20}",
         message = "비밀번호는 영문과 숫자, 특수기호를 적어도 1개 이상씩 포함하여 8자 ~ 20자여야 합니다.")

며칠 전까지 In-Memory DB인 H2를 사용하고, 톰캣과 Ngrok을 통해 수동 배포를 했었다. Ngrok을 통해 들어온 API 요청들을 쉽게 확인할 수 있었는데, 개발 단계에서는 검증을 유연하게 설정하기도 했고, 예외 처리에서 미흡한 부분이 있어서 회원가입을 하지 않고 로그인 시도를 하는 단순 실수로도 500 에러가 나타나는 문제가 있었다.

이전에 예외 처리도 주요한 이슈로 기능 담당을 나눴었는데, 에러가 발생 시에 상태 코드만 나타나고 메시지는 나오지 않아서 어떤 에러인지 파악하기 힘들었다. 메시지가 출력되지 않고 있던 것을 이제야 눈치챈 것이다.

BusinessLogicException 발생 시 에러 메시지가 반환되지 않는 문제와 Board와 Answer를 수정할 경우 수정 시간이 반영되지 않는 문제를 해결했다. 요 며칠 고민했던 로그인 성공 시 Response로 email과 photoURL을 전달하는 방법에 대해 방법을 찾아서 구현했다.

 예외 처리 중심으로 코드를 살피다 보니 빠져 있거나 구현이 제대로 되지 않은 부분들이 발견되어서 해결한 부분도 있지만 로그인 예외 처리와 토큰의 정보를 통해 User 정보를 활용하는 것에 대한 고민이 더 필요할 듯싶다.

 

★★★★★

 

댓글