내일배움캠프/Schedule Management(18)
-
[일정 관리 앱] 피드백 반영(2)
해당 프로젝트에 LoggingFilter 를 구현해 두었지만 이를 제대로 사용하지 못하고 있다는 피드백을 받아 해당 필터를 수정해 보았다. 기존에는 요청 URL 과 요청이 수행되고 나서 완료 메시지만을 로그로 남겼다면 수정을 통해 요청 정보(Request Header, Parameter, Body)와 응답 정보(HttpStatus, Response Body)를 로그로 남겨보았다. 0. 요청/응답 정보에 대한 로그를 Filter 에서 남긴 이유 처음에는 "그냥 적절한 곳에 로그를 남기면 되지 않을까?" 라는 생각만 있었지만 LoggingFilter 를 수정해보면서 "요청을 가장 먼저 마주하는 곳과 응답을 가장 마지막에 마주하는 곳이 Filter(프로젝트에서는 LoggingFilter)이니 여기서 로깅을 하..
2024.10.29 -
[일정 관리 앱] 피드백 반영(1)
과제 제출후 받은 피드백 내용들을 프로젝트에 반영하며 기록을 남겨본다. 1. 명확한 클래스 네이밍 이 부분은 인지하고 있었으나 섬세함이 부족해 피드백을 통해 수정을 권유받았다. 과제 요구사항 중 'Open API' 사용을 반영하기 위해 사용한 RestTemplate 객체를 빈으로 등록하기 위해 Config 클래스에 RestTemplate 객체를 생성하는 메서드를 구현해 놓았다. 하지만 이는 Config 라는 클래스의 이름만으로 어떤 '구성' 을 위한 코드가 클래스에 작성되어 있을지 알기 어렵다. 그래서 아래와 같이 Config 라는 기존의 클래스명을 RestTemplateConfig 로 변경해 RestTemplate 구성과 관련된 내용이 해당 클래스에 있음을 '명시적' 으로 알 수 있도록 수정하였다.@C..
2024.10.28 -
[일정 관리 앱] 리팩토링(5)
마지막으로 댓글 관련 CRUD 를 리팩토링을 진행해 보려 한다. 댓글의 경우 댓글에 관련된 모든 요청에 인증이 필요하다. 하지만 그 외 요구사항에 크게 없어 스스로 판단해 반영한 내용이 다수 존재한다. 이번에 리팩토링한 코드는 여기서 확인이 가능하다. 0. Comment 엔티티 필드 변경 기존에는 작성자명(String author)을 사용했지만 이제는 작성자 ID(Long authorId) 를 저장하도록 수정하였다. 이렇게 변경한 이유는 댓글 삭제 및 수정시 대상 댓글을 작성한 회원만이 해당 댓글을 삭제/수정 할 수 있게 구현하다 보니 작성 회원이 맞는지 '검증' 이 필요했다. '검증' 에는 댓글 작성자의 'id' 와 요청 회원의 'id' 를 비교하는 방식을 사용하는 것이 적절하다 생각 필드를 수정하게 ..
2024.10.16 -
[일정 관리 앱] 리팩토링(4)
이번에는 '일정' 에 해당하는 CRUD 에 해당하는 로직들을 리팩토링 해보려 한다. '도전 기능' 요구사항을 반영하였기에 '일정' 에 '날씨' 필드가 추가해야 하고, 필터에서 인증/인가가 수행되므로 더 이상 요청시 쿼리 파라미터로 작성자(회원)의 'id' 값을 전달 받을 필요가 없어졌다. 이번 리팩토링으로 수정된 코드는 여기서 확인이 가능하다. 참고로 일정에 관련된 모든 요청은 '인증' 이 필요하고, '일정 수정, 삭제' 요청의 경우 '인가' 가 필요하다. 요구사항에 "일정의 수정 및 삭제의 경우 관리자 권한이 필요합니다" 라는 내용이 명시되어 있기 때문이다. 1. 일정 생성 일정 생성시 더 이상 쿼리 파라미터로 작성자의 정보(id)를 전달 받을 필요가 없다. 필터에서 '인증/인가' 를 수행후 요청 사용..
2024.10.16 -
[일정 관리 앱] 리팩토링(3)
원래라면 JWT 를 프로젝트에 반영하면서 부터 구현했어야 하는 것이 맞지만 이후 요구사항 반영을 위해 미루어 왔던 'Access Token' 재발급에 대한 내용과 '관리자(ADMIN)' 권한을 가진 관리자 계정에 대한 부분을 해당 게시글에 기록하고자 한다. 이번에 프로젝트에 반영된 내용은 여기서 확인이 가능하다. 1. Access Token 재발급 이전 게시물에서도 몇 번 언급했지만 과제에 주어진 요구사항에는 'Access Token' 에 대한 내용만 있을 뿐 'Refresh Token' 에 대한 내용은 없다. 하지만 이번 기회에 'Refresh Token' 또한 활용해보고 싶었기에 개인적으로 추가한 상태이다. Access Token 의 사용목적은 '인증/인가' 이며, Refresh Token 의 사용목..
2024.10.15 -
[일정 관리 앱] 리팩토링(2)
이번에는 '유저(멤버)' 엔티티를 다루는 요청에 대한 모든 부분을 하나씩 확인하며 수정해 보려한다. 수정은 요청시 '인증 필요' 의 유무로 구분지어 나누어 진행했다. 이번 리팩토링을 통해 수정된 코드는 여기서 확인 가능하다.인증 불필요 : 회원 가입, 로그인인증 필요 : 그 외 모든 기능과제의 요구사항에 따라 위와 같이 구분짓게 되었다. 1. 인증이 불필요한 요청 아래의 요청들은 필터에서 인증/인가를 수행하지 않고 곧장 'MemberController' 에 'ServletRequest, ServletResponse' 를 전달하게 된다. 1-1. 회원 가입 '회원 가입' 에는 회원(유저)의 '이름, 이메일(계정 ID), 비밀번호(계정 비밀번호)' 정보를 전달 받아야 한다. 전달받은 정보로 새로운 회원에 대..
2024.10.15