- 기간 : 01/28 (금) ~ 02/03 (목)
이번 주차 주제 : 주특기에 익숙해지고 조금 더 생각하며 로직 짜기
개인 목표 : 프로젝트에 시큐리티 적용, JPA 연관관계 적용, CRUD 연습
이번주 내가 배운 것
- 백앤드
- 스프링 시큐리티 세션방식으로 로그인 적용, 시큐리티 필터 사용해서 커스텀 하기
- OAuth2로 구글, 카카오 연동
- JPA의 연관관계, 영속성 컨택스트 적용하고 익숙해지기
- RESTful API 작성해보기
- 게시글 페이징 처리 적용
- validation 사용
- 공통 예외 처리 → 공통 ErrorResponse 만들기
배운점
- 과제 시작 전 API를 혼자 짜보았다. REST API를 짜고 싶었는데 작성 후 매니저님한테 피드백 받으면서 수정했다. API를 먼저 설계하고 개발에 들어가니까 편했다.
- 이번 주차에 가장 많이 고민했던 것은 응답 데이터를 어떤식으로 전해줄지에 대한 고민이었다.
- 핸들러로 예외처리를 하고 나서 보낼 응답 데이터와 요청 성공시 보낼 응답 데이터를 공통으로 사용하려고 했는데 복잡해져서 매니저님께 여쭤봤다. 피드백을 통해 응답DTO를 예외처리 응답과 일반 성공시 응답을 다르게 해서 처리하도록 수정
- 스프링 시큐리티가 로그인을 자동으로 수행해주는데 중간에 그 흐름을 내 입맛대로 바꾸고 싶었다. 로그인 실패시 alert을 띄어주기 위해서 로그인실패시 발동되는 필터를 커스텀해서 로직을 작성했다. 스프링 시큐리티는 필터가 겁나게 많다. 그래도 커스텀해서 쓰도록 잘 구현되어있으니 내 입맛에 맛게 잘 사용하면 로그인 로직을 쉽게 변경할 수 있을 것 같다.
- 유효성 검사를 위해 validation을 사용했다. 클라이언트 단에서 1차로 검사하고 백앤드에서 한번 더 검사했다. 요청DTO에 유효성 어노테이션을 사용해서 검증 로직을 구현했다. @Valid 를 사용해서 걸리는 예외를 공통으로 처리해서 에러 응답 DTO로 보냈다.
- JPA를 사용하면서 게시글과 댓글에 대한 연관관계 설정, 무한참조 방지하는 방법 등 배운 것을 프로젝트에 적용할 수 있었다. 아직 많이 어렵다.
- 아무튼 숙련 과제를 통해 로직 구현과 전체적인 흐름에 조금 더 익숙해진 것 같다.
- @Valid 와 BindingResult 때문에 2시간 날려먹었다. 매개변수 순서 짜증나네.. 아무튼 @Valid 다음엔 꼭 BindingResult가 오게 하자...
- @NotNull, @NotBlank, @NotEmpty 차이, @NotBlank 써야징
질문 내용
- 예외처리 해서 응답해줄 때 400번대, 500번대로 넘기고 클라이언트 단에서 얼럿띄어주는 형식으로 만들었는데 콘솔에 400에러가 그대로 뜨는데 그냥 둬도 될지, 아니면 상태코드는 200으로 넘기고 분기로 에러 나눠서 처리하면 좋을지
→ 상태코드는 200으로 넘기되 응답 메시지 안에 상태코드랑 메시지 넘겨주면 될듯, 그리고 프론트랑 에러 부분 협의 하면 좋을 듯
이번주 기술 키워드 : ORM, SQL, MVC
- ORM에 대한 이해와 JPA를 사용할 때의 장단점 등에 대해 알 수 있었다.
잘한점
- 이번주 과제 난이도가 헬이었다. 일단 요구사항을 끝까지 완료했다. (테스트 코드 짜는 것은 포기함)
- 그동안 배웠던 이론들 (시큐리티, JPA 등)을 프로젝트에 코드로 구현하고 적용했던 것
- 꾸준히 했던 것. 코드를 보고 따라치는 것에서 그치는게 아니라 어떻게 적용하고 뭐가 더 좋을지 고민하는 시간을 더욱 가져야겠다.
- 구현할수록 재밌어진다. ㅋㅋ
- 과제를 마무리하고 팀원들과 각자 구현한 로직을 리뷰하는 시간을 가졌다. 내가 짠 코드뿐만 아니라 다른 사람이 짠 코드를 통해 배울점이 많이 있었다.
- 팀원들의 오류를 같이 봐주면서 해결하는 시간이 많이 있었다. 나도 날수도 있는 오류다보니 이 시간도 배울 수 있는 시간이었다.
부족했던 점
- 테스트 코드는 작성 못했다. 자꾸 에러가 난다. 테스트 코드 관련 공부를 해야할듯!@
- 이번주는 과제가 많아서 그런지 너무 과제에만 신경을 쓴듯. 시간을 잘 쪼개서 독서와 이론공부도 겸해야 겠다.
- 응답을 어떻게 보낼지는 프론트 개발자와 같이 협의해서 정하면 좋을 것 같다.
- 자바 공부 해야겠다!!
보완 / 발전하고 싶은 점
- 테스트 코드 작성, TDD에 대한 공부 이해
- 이제 곧 프론트앤드와 협업을 하는데 넘겨줄 데이터를 어떤식으로 보내줄지, 보내줄 때 어떻게 로직을 구현할지 조금 더 공부하고 정리해놓자.
- swagger 적용안해봤네.. 다음 플젝 때는 적용해바야지
'부트캠프 > 항해99' 카테고리의 다른 글
6주차 미니프로젝트 회고 (0) | 2022.02.21 |
---|---|
5주차 주특기 심화 회고 (0) | 2022.02.13 |
3주차 주특기 기초 회고 (0) | 2022.01.30 |
2주차 프로젝트 회고 (0) | 2022.01.23 |
1주차 프로젝트 회고 (0) | 2022.01.16 |