일부 작업은 PR이 밀려서 다음주까지 이어서 진행된다.
따로 노트에 관련된 고민을 정리하였다.
(내 생각) 웹 애플리케이션의 효과적인 예외 처리 전략
최대한 비즈니스 로직의 예외는 외부 의존성 없이 개발하려고 하였으나,
구현의 어려움이 있어 HTTP Status Code에 의존하도록 변경하였다.
전역 핸들러에서 에러를 Catch하도록 하였는데, 만약 HTTP를 고려하지 않고 커스텀 에러를 사용한다면 전역 핸들러에서 각 예외를 Catch하거나 API, Security 쪽 구현에서 try-catch로 적절한 에러로 wrap해야 한다.
feat: ResponseEntityExceptionHandler 상속
RestExceptionHandlerAdvice는
ResponseEntityExceptionHandler가 처리하는 MVC에러를
편리하게 재정의 할 수 있도록 상속한다.
PR 다른 PR 리뷰까지 시간이 남아서 구성정도만 구현하였다. 구체적인 설정은 이후에 할 예정
spring web
<- spring security
이 단방항 의존성을 가지기 위해서 AuthenticatedUserManager
라는 객체를 사용한다.
이 고민은 이전 프로젝트를 했을 때, 생각한 내용이다.
구체적인 설명은 따로 정리해 두었다.
(여러 버그와 보완 작업 때문에 5주차까지 진행하였다.)
단순한 CURD라서 별 내용은 없고, 비즈니스 상황에서 발생하는 예외를 위에서 구현한 Custom Exception을 상속받아 구현하였다.
4주차 - 프로젝트 방향성에 대한 고민 에서 말한 목표를 빠르게 해결하기 위해 단순하게 구현하였다.
페이지네이션도 없고, 인덱스도 걸지 않았다.
User/Post/Reply API까지 구현을 완료하면, 바로 배포와 운영을 시작하기로 했다.
(여러 버그와 보완 작업 때문에 5주차까지 진행하였다.)
기존에는 Spring Restdocs를 사용하려고 했지만 빠르게 적용하기는 어렵고, 여러 고려할 부분이 많았다.
테스트코드도 작성해야 하고, API명세가 담긴 html 파일도 어플리케이션에서 접근할 수 있게 설정을 추가해야 하고...
그러다가 API 기능을 간단하게 테스트도 할 수 있는 swagger를 임시로나마 도입하기로 했다. (이후에 swagger+Restdocs도 좋을 것 같았다. 참고1, )
해당 문서를 참고하여 springdoc을 사용하기로 결정하였고, 공식문서를 읽고 도입하였다.
사용해보니 API 테스트도 쉽게 할 수 있고, web ui도 제공해서 간단한 프로젝트에서는 사용하기 좋다는 생각이 들었다.