코드 리뷰
안녕하세요 멘토님! :)
작성한 코드에 대해 부족한 점
, 잘못된 점
, 잘한 점
등 아낌없이 조언해주시면 감사드리겠습니다! 😊
코드 작성하면서 어려웠던 점
Restful한 API
설계 방법에 대해 생각해보는 시간을 가졌습니다.MockMvc
를 사용한 테스트 방법을 배우는 시간을 가졌습니다.DTO
를 잘 작성하는 방법에 대해 생각해보는 시간을 가졌습니다.- 로그인 API에서 헤더에
Bearer 토큰
을 포함하지 않으면, 인증되지 않은 사용자로 로그인이 막히게 되어있습니다.
하지만 토큰은 로그인 시마다 새롭게 부여되기때문에, 인증 방법에 대해 이해하기 어려웠습니다.
✅ 우선 저는 헤더에Bearer 토큰
이 존재하면 인증되도록 작성했는데, 올바른 방법이 아닌 것 같아Spring Security
를 공부해 보려고 합니다.
공부하실때 Docs 문서를 참고하시면 좋습니다.
Spring Security Docs
https://docs.spring.io/spring-security/reference/
✚ 코드 리뷰를 반영하여 1주차 과제를 개선했습니다. 😄
Controller에는 Service에서 조회한 데이터에 대한 응답에 대한 로직만 있어야 합니다.
Controller에서 선언한 DTO는 다른 DTO 처럼 따로 클래스로 만들어서 관리해주세요.
코드 리뷰시 중심적으로 리뷰해주셨으면 하는 부분
- 행위에 가까운 API에 대한 Restful 설계
- 로그인, 회원가입은
자원
보다는행위
에 가까운 API인데,Restful하게 API
를 설계하는 방법이 궁금합니다. /login
,/join
은 동사인데 이렇게 URI를 작성하는 것이 Restful한지 궁금합니다. 🤔
- 로그인, 회원가입은
Restful 하게 사용 하려면 URI를 작성할때 URI(정보)와 HTTP Method(행위)로 API를 설계하면 됩니다.
유저 로그인 : POST /users/login
유저 회원 가입 : POST /users/join
관련 글도 같이 공유 드립니다.
REST API
https://meetup.nhncloud.com/posts/92
- 발생된 에러를 손쉽게 파악하는 방법
테스트 코드를 작성하면서, 해당 에러가 발생했는지 알기 위해에러 메세지
를 파싱하는 것이 어렵다는 생각이 들었습니다.
예를 들어 회원가입시 <id와 비밀번호를 입력했을때 발생할 수 있는 에러 메세지>는 다음과 같습니다.
ex) "8글자 이상이어야 합니다. :id
영문, 숫자가 포함되어야합니다.:password
"
이때 에러를 파악하기 위해 문자열 파싱
을 할 수 있지만, 오류가 발생할 수 있는 필드 조합
과 발생될 수 있는
에러의 조합
이 무궁무진 할 것이라는 생각이 들었습니다. 🥸
또, 에러 메세지 이외에 상태코드
는 해당 에러 자체를 가리키기 어렵고, Exception 클래스
를 발생할 수 있는 오류마다 만들기도 어려울 것 같다는 생각이 듭니다.
말씀하신대로 요청에 대한 케이스가 매우 많습니다. 규격에 맞지 않는 데이터가 요청이 오면 검증 처리를 해주는 Spring 에서 Validation 기능을 제공하니 다음에 참고하시어 사용해보시면 좋을꺼 같습니다.
Spring Boot Validation
- ✳️ 디버깅과 테스트 시 편리하게 에러를 파악하는 방법이 있는지 궁금합니다.
편리하게 파악하는 방법은 없는거 같습니다. 😭
다만 에러 발생시 에러메시지를 잘 확인하여 에러가 발생한 위치를 정확히 파악하고 데이터 디버깅 시에는 툴의 도움을 받아서 데이터 확인을 하여 에러가 발생한 원인을 빠르게 파악이 가능합니다.
IntelliJ 디버깅
https://jojoldu.tistory.com/149
감사합니다.
코드 리뷰 반영
2주차 과제
- 컨트롤러는 로직만 존재하도록 도메인마다 패키지에 DTO 클래스를 따로 만들어 분리했다.
- Mock 코드를 utils에 모아 DB 역할을 하도록 했다.
궁금한게 정말 잘 해결되었다. 알려주신 거 빨리 공부해보자 🐯
'Spring > 카테캠 - TIL' 카테고리의 다른 글
카카오테크캠퍼스 : 4주차 과제 (0) | 2023.07.19 |
---|---|
4주차 강의 : DTO 유효성 검사, Custom Exception, Controller와 Service의 책임, OSIV (2) | 2023.07.19 |
TIL [0714] : 3주차 과제 수행 (0) | 2023.07.14 |
TIL[0712] : 3주차 강의 (DTO, 스트림, HTTP, JDBC, JPA) (0) | 2023.07.10 |
TIL[0706] : 2주차 과제 - Mock Controller 3(마무리) (0) | 2023.07.07 |