[인프런 워밍업 클럽 2기 백엔드 프로젝트 과정] 3주차 발자국

[인프런 워밍업 클럽 2기 백엔드 프로젝트 과정] 3주차 발자국

I. 3주차 학습 내용

 

 

1일차 - 포트폴리오 사이트 화면 개발

  • 부트스트랩

     

  • 템플릿 수정

2일차 - 어드민 공통 기능 개발

0) 오류의 종류

자바 계열에서 오류는 크게 ErrorException으로 나뉜다

Error는 애플리케이션에서 대응할 수 없는 오류로 - Stack OverFlow Error와 같이 개발자가 해결할 수 없는 오류이다.

Exception은 애플리케이션에서 대응할 수 없는 오류로 - RuntimeException 과 같이 개발자가 대응하는 코드를 작성할 수 있는 오류이다.

 

 

1) 예외 처리

 

RuntimeException : 실행시점에 발생하는 예외 처리를 위한 클래스

예외는 다양한 경우가 있을 수 있다. 하지만 모든 예외에 대응할 수 없으므로 그 외의 오류에 대응하는 코드를 작성해주어야 한다.

 

Exception을 통해 예외를 정의해주고 Advice의 @ExceptionHandler를 통해 예외에 대한 처리를 지정해준다

 

2)DTO

2-1 공통 Api 응답 포맷

Api 응답의 공통 포맷 작성

companion object: 클래스의 메서드를 각 클래스의 인스턴스 없이 호출할 수 있게 해줌

 

수정, 삭제, 저장 성공시에 대한 포맷을 작성해줌

 

2-2 폼 DTO

공통 폼 요소 정의

사용자 입력폼을 정의 포맷, 강의에서는 타입별로 text, date, select로 나눔 나는 개인 프로젝트에 date는 필요 없어서 text, checkbox, select 타입 포맷을 지정함

 

3) Interceptor

요청과 응답 사이에서 특정 작업을 수행하는 역할

interceptorConfiguration을 통해 admin 하위에 경로가 adminInterceptor에 영향을 받게 함

addIPathPatterns - 특정 경로를 인터셉터 처리에서 포함

excludePathPatterns - 특정 경로를 인터셉터 처리에서 제외

 

3일차 - 데이터 조회, 삽입 수정, 삭제 기능 개발

 

 

II. 3주차 미션 - 조회 API 개발하기

3주차 미션

강의 계획대로 진행하다 보니 과제가 조회 api 개발이 presentation을 통해 Json 포맷으로 웹 페이지의 결과를 띄우는건줄 알았는데 아니였나 보다 이번주 마지막 강의를 들어보니 조회 api는 따로 있었다. 망했다

일단 Json을 통해 presentation 페이지에 띄우는건 어려운점이 크게 없었다.

 

사용자 정보를 저장하는 엔티티 이름을 User로 지정해서 SQL 예약어와 겹쳐서 User로 지정된 변수명과 연결된 클래스를 전부 UserInfo로 바꿔야 하는 문제 외에는 없었다.

 

조회 api 개발은 아직 진행 중이다. 연결된 엔티티가 정보 전체를 받아오는 문제, 리포지토리를 통해서 조회를 다시해야 하는 문제가 있어 엔티티, 리포지토리 코드를 전체적으로 수정하고 있다.

 

선택된 책 엔티티가 유저 엔티티 자체를 인자로 받다 보니 api를 개발할때 넘겨줄 인자가 없어 조회 코드를 작성하지 못해 userid만을 참조하도록 하고 selecbook repository에 getbyuserId를 추가하는 작업을 추가하는 중이다. 3주차에서 완주를 결국 실패하게 됬지만 모든 과정을 꾸준히 지속해 나갈 생각이다.

 

 

 

 

 

III. 3주차 회고

3주차 미션은 지금까지의 미션 중에서는 가장 어려웠다. 지금까지는 전체적인 아키텍쳐 구조를 잘 몰라도 어느정도 따라할 수 있었는데 테스트 코드가 까지 통과해야 하는 코드를 작성해야하다 보니 기존에 잘못 쓴 코드들을 다 들어내고 작업해야 하는 경우도 있었다. 처음 하는 작업이다 보니 설계단계에서부터 실수가 많이 보여 시간을 많이 들이고 있는 중이다. 그래도 이 부분을 잘 정리해서 다음부터는 좀 더 삽질을 덜 하게 되도록 노력하겠다. 경험 덕분에 클린 코드에 대한 새로운 관점이 생겼고 아키텍쳐에 대해 자세히 공부해야 겠다는 생각이 들었다. 코드 설계단계의 중요성도 새로 깨닫게 되었다.

지금은 그저 미션을 위해서 끄적여 놓은 코드에 불과하지만 추후 과정이 끝나고 여유가 생겼을 때 코드를 좀 더 다듬고 이번 경험을 토대로 프로젝트 전체를 재설계하여 좀 더 완성도 높은 프로젝트로 완성하고 싶은 욕심이 생겼다.

댓글을 작성해보세요.

채널톡 아이콘