no image
DTO의 반환 형태, 명명법에 대해
[글의 의도] 1월 30일, 야놀자 패캠 부트캠프를 수료했다. 취업 준비를 하면서 블로그 글을 쓰기 위해 주제를 고민하던 중 최근 파이널 프로젝트에서 많이 사용했고, 개인 프로젝트에서 한번 더 고민한 DTO에 대해 글을 쓰려고 한다. [DTO의 형태] 파이널 프로젝트는 FE + BE가 함께 진행하며 개발을 했으므로 나는 API Server만 개발을 했다. 따라서 FE로 어떤 값을 어떻게 보내야 편하게 사용할 수 있을지 고민을 팀원들과 했었다. 그 중 고민이 되었던게 DTO의 형태였다. 값을 어떻게 내려보낼지 고민하기 전에 DTO의 이름도 관련이 있으니 먼저 살펴보자 [ 자연스럽게 사용하게 된 DTO의 네이밍 ] 미니 프로젝트, 토이 프로젝트를 진행하면서 팀원분들의 코드로 어깨 넘어 배운 DTO 명명법은 ..
2024.02.05
no image
패스트캠퍼스X야놀자: 미니프로젝트(숙박 예약 서비스) 후기
이번 미니 프로젝트는 여러 개의 조에서 동일한 주제로 FE 수강생들과 협업 프로젝트를 진행한다. 기존에는 BE 수강생들 끼리 API를 설계하는 주제를 가지고 프로젝트를 진행했었는데 FE 수강생들과 협업하는 경험은 쉽게 경험하지 못할 좋은 기회인 것 같다. [싱크업 미팅] BE 수강생 4명이서 한 팀을 이루었고 우리 조는 사다리 타기로 조장을 선정했다. 이후에 데이터베이스 설계와 API 설계를 진행했다. [나의 역할] 팀원 모두 초반에는 요구사항을 분석하고 도메인을 설계하며 공통적인 작업을 진행했고 이후에는 역할을 나눠서 따로 개발을 진행했다. 나는 로그인과 회원가입, Spring Security 인증, 인가를 담당했다. 이 주제는 현업에서 비교적 신입에게 맡기지 않는 분야이긴 하지만.. 그래도 한 번 맛..
2023.12.19
no image
SpringSecurity AuthenticationEntryPoint 동작하지 않았던 이유
[글쓰는 의도] 미니프로젝트 과정에서 스프링 시큐리티를 담당했다. JWT AccessToken을 인증하는 과정에서 분명 AuthenticationException 에러가 발생하면 AuthenticationEntryPoint가 동작해서 예외를 처리하기 마련인데 아무리 찾아봐도 내가 커스텀한 AuthenticationEntryPoint 는 동작하지 않았다. [여러가지 해결방안] AI와 열띤 토론을 한 결과 해결책은 다음과 같았다. 1. 커스텀한 예외가 AuthenticationException을 상속받지 못한 경우 public class BadTokenException extends AuthenticationException 2. Spring Bean으로 커스텀한 AuthenticationEntryPoint..
2023.11.27
no image
프로젝트 도중 마주친 @Value의 주의사항
[글 쓴 의도] 이번 토이 프로젝트 주제는 이전에 진행했던 동일 주제에 로그인, Open API, 회원가입 등 다양한 기능을 추가하는 방향으로 진행하기로 했다. 내가 맡은 부분은 Kaka Open API를 연결하고, 여정을 등록하는 과정에서 장소 이름을 입력하면 도로명 주소로 변환하는 기능을 구현하기로 했다. Key 값을 외부에 노출하지 않기 위해 .env 파일에 KAKAO_KEY 필드를 추가하고 application.yaml 파일에 api.key 항목을 추가해서 @Value 어노테이션으로 관리하려고 했다. 하지만 @Value 어노테이션이 잘 동작하지 않는 것을 확인했다. 이유를 알아보자 [문제가 발생한 이유] @Value를 썼을 때, 인텔리제이가 아무 잔소리 없이 넘어갔다는 것은 매핑은 잘 되었다고 볼..
2023.11.13
no image
application.yaml 파일 .env 설정
[글을 쓰는 의도] 야놀자 패캠 부트캠프에서 팀 단위로 하는 토이 프로젝트 마다 벨트를 꽉 매고 버스를 타고있다. 다음 프로젝트를 위해 개인 프로젝트를 만들어서 Spring JPA를 복습하려고 한다. 간단하게 프로젝트를 만들고 MySQL과 JPA를 연동하는 과정에서 애를 먹어서 나중엔 고생을 덜 하려고 글로 남기려고 한다. [막힌 부분] 먼저 Spring Init에서 간단한 의존성을 추가하고 프로젝트를 만들었다. 그리고 MySQL을 Docker-compose를 사용해서 DB를 만들었고 이 과정에서 지난 팀 프로젝트에서 썼던 외부 .env 파일을 사용해 docker.yml, .env , application.yaml을 설정했다. //application.yaml spring: config: import: ..
2023.11.08
no image
패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_토이프로젝트2 후기
Title : 여행 여정을 기록과 관리하는 SNS 서비스 2단계 2단계 토이프로젝트는 한 달 전 팀원들과 동일하게, 비슷한 주제로 Spring을 가지고 진행했다. 1단계 서비스와 비슷한 요구사항을 가지고 특징은 API를 설계하고 개발하는 것이 중요하다고 생각했다. 워낙 팀원분들이 잘 하시는 분들이여서.. 이번에도 배운다는 마인드로 임했다. 1단계에서는 여정 부분을 개발했다. 2단계에서도 역할을 나누기 위해 랜덤으로 역할을 정하고 나는 여정 부분을 맡게 되었다. 개발 일정 개발 일정은 위 사진과 같이 동일하게 진행했다. 첫 날에는 API 설계 및 ERD 설계를 진행하고 팀원 역할을 배정했다. 나머지 일정도 위 계획표와 비슷하게 동일했다. API 설계 (여행, 여정) API 설계는 위에 사진과 같이 진행했다..
2023.11.02
no image
패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_토이프로젝트 후기
Title : 여행 여정을 기록과 관리하는 SNS 서비스 1단계 이번 토이프로젝트는 조를 새로 배정 받아서 5인 1조로 과제를 수행했다. 첫 조원분들과 만나는 자리에서 회의를 간단하게 진행했는데 다 프로젝트 경험이 여러 번 있으시고, 관련 지식도 많은 팀원 분들을 만났다. 토이프로젝트 진행은 화면에 출력하는 view 1명, 여행관련 2명, 여정관련 2명으로 나눠서 진행했고 나는 여정 파트를 맡았다. 개발 일정과 프로젝트 기획은 아래와 같다. 제안서에는 여행속에 여정이 배열로 존재하는 구성이었는데, 우리 조는 여행 파일 따로, 여정 파일 따로 관리하기로 하였고, 여정을 추가, 읽기 위해서는 여행 파일의 인덱스가 필요하다는 특징이 있다. 그렇게 구조를 설계하고 각자 개발에 들어갔다. 나는 이번이 여럿이서 하..
2023.09.15
no image
패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_2차 과제 후기
1차 과제와 비슷하게 Kakao API를 활용해서 HTTP 요청을 보내고, 응답을 받는 주제로 과제를 진행했다. 동작 - 데이터 - 객체 - 클래스 순서로 객체를 모델링 해야하는데 아직 참 어렵다. 그래도 더 나아질 부분만 남았다는 뜻이니깐 객체지향 공부를 더 해야겠다. 문제 1 JDBC를 사용하기 위해 Driver에 연결된 Connection을 인자로 받고, List list를 DB 저장소로 저장하는 메서드 이다. PreparedStatement 객체를 생성해서 사용을 하는데 Price와 Sale_price를 넣는 과정에서 SQL 문 ? 자리에 매칭이 되지 않는 문제가 있었다. intValue를 붙여줘서 잘 동작하긴 하지만 IDE에서 필요 없는 변환이라고 도움말이 뜨긴 한다. 이 부분에 대해서는 Pre..
2023.09.03
no image
패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_1차 과제 후기
문제 1 과제를 처음 진행할 때 출력 반복문의 인덱스를 정하기 위해서 객체의 수를 알아내기 위해 공식 API를 참고했다. 응답내용에 meta -> total_count가 응답받은 결과의 갯수인 줄 알고 그 값을 기준으로 출력할 수 있도록 반복문을 작성했다. 결과는 아래의 표와 같다. 반경(km) total_count 실제 응답 받은 객체 수 0.3 2 2 0.5 20 15 공식 문서에는 검색 된 문서의 총 수를 응답받지만 결과가 달라서 내 코드를 신뢰할 수 없었다. HTTP 요청 테스트 방법이 익숙치 않아서 시간을 아끼고자 다른 방법을 사용했다. (추후에 HTTP 요청 테스트 하는법 공부하기) 원래는 오브젝트 정보를 받아오자마자 날 것으로 프린트하려고 했지만 List에 담아서 size()를 활용했다. 아..
2023.08.23