목표
스프링 부트를 활용하여 CRUD 연습 일정관리 페이지 제작
요구사항
1. API 명세 작성
2. ERD 작성
3. 일정, 유저, 댓글 관리에 대한 CRUD (조회, 상세 조회, 등록, 수정, 삭제)
4. 유저 테이블을 통한 수정, 삭제 권한 관리
검사
1. Valid를 통한 입력 텍스트 수 검사, 이메일 형식 확인
2. 등록, 수정, 삭제에 대한 권한 일치 여부 확인 (현재 세션의 아디 값을 통해 등록, 수정, 삭제토록)
3. 조회 되지 않는 값에 대한 예외 처리
4. 권한 예외 처리
과정
1. ERD 작성
- 일정 - 댓글 - 유저 서로 간 1:N 관계이며, 이메일은 유니크 키이다. 일정은 유저번호를 댓글은 스케줄번호와 유저번호를 외래키로 가진다.
2. 각 도메인 별 3Layer 작성
3. OncePerRequestFilter를 통해 인증 로직 작성, 권한에 따른 삽입, 수정, 삭제 호출
4. 코드 리펙터링 및 Valid + 검사 작성
5. API 명세 작성
배운 점
1. DeleteMapping은 단순히 ID 값만으로 삭제하는 로직이다. 이 경우 DTO를 받는 것보다 PathVariable이 더 낫다.
2. DTO의 명칭은 메소드의 명칭 PutScheduleResDTO보다는 UpdateScheduleResDTO가 더 좋다. 명확하게 역할을 알 수 있다.
3. 서버 재 시작 시 매번 세션이 초기화되어 로그인을 해야한다. 스프링에서는 세션을 유지하는 기능이 있지만 스프링 부트에서는 따로 제공하지 않아 추가적인 DB를 통해 세션 정보를 저장하거나, 필터 로직에 로그인하는 로직을 통해 보다 편리한 API 테스트를 할 수 있다.
4. 맥에서 Postman 사용 시 URI 입력 칸에 공백 문자가 종종 포함되었다. 그 부분은 필터에서 getRequestURI를 통해 확인할 수 있었다.
5. 정적 팩토리 메서드 패턴을 통해서 알게 되었다. 팩토리 패턴은 어떠한 양식에 자신이 원하는 값을 편리하게 넣는다고 생각한다.
트러블 슈팅
문제 1 : postman을 통해 API를 요청했으나, 상태 코드 404가 계속 떴다.
해결 및 결과 : 서버 동작 여부, 경로, 메소드 다 확인했는데 getRequestURI의 값이 '/'가 나왔다. 맥에서 발생할 수 있는 오류로 postman 의 URI 값에 공백 문자가 포함되어 제대로 인식하지 못하여 나온 결과이다. 그 부분을 확인하고 제대로 작성하여 해결하였다.
깃허브 링크 : https://github.com/donghee-develop/be-scheduler-jpa
'스프링부트' 카테고리의 다른 글
| JPA QueryDsl 사용하기 (1) | 2025.05.01 |
|---|---|
| JWT 토큰을 이용한 로그인 구현 - 1 (0) | 2025.04.16 |
| OncePerReqeustFilter를 사용하여 로그인 구현하기 (Security X) (1) | 2025.04.01 |
| 일정 관리 페이지 만들기 (0) | 2025.03.24 |
| 스프링부트 + JPA에 대하여 (환경 세팅) (0) | 2025.03.17 |