Back-end/TIL
-
[SpringBoot] 서버에서 사용자 입력 값과 Request Body를 Validation하는 2가지 방법Back-end/TIL 2022. 4. 4. 15:45
📌 Validation이 필요한 이유 의도적으로 이상한 값으로 서버에 요청을 보낼 수 있기 때문에 프론트와 서버에서 둘다 해줘야 한다. 회사 코드를 보니 이메일이나 전화번호 입력 값에 대한 형식을 모두 서버에서도 체크해주었다. (기존에 사이드 프로젝트 할 때는 '입력값은 프론트에서 유효성 검사 해주니까 괜찮겠지' 하고 넘어갔었는데 반성하게 되었다. 다음 사이드 프로젝트에서는 입력값에 대한 서버 유효성 검사도 추가해야겠다) 그렇다면, 어차피 서버에서도 유효성 검사를 해주는데 프론트에서도 하는 이유는? - 서버 부하를 줄여주고, 사용자의 편의성을 위해서이다. - 서버에서의 유효성 검사는 프론트에서의 유효성 검사보다는 느릴 수 밖에 없다. 📌 준비 의존성 추가 dependencies { implementati..
-
[Thymeleaf] form submit시 입력 값 binding 오류Back-end/TIL 2022. 4. 4. 14:53
#오류 상황 API 호출 시 UserSignUpReqDto 클래스의 객체로 사용자가 입력한 값이 바인딩되어야 하는데 안되었다. #원인 및 해결 UserSignUpReqDto 클래스 필드들에 setter 메서드를 만들어주지 않아서 였다. 위의 코드를 보면, *{nickName}의 의미가 setNickName({value})과 동일한 기능이므로, Dto 클래스의 필드별 setter 메서드를 정의해두지 않아서 값이 바인딩되지 않았던 것이다. #Thymeleaf 관련 간단 추가 정리 th:action - form 태그 사용 시 해당 경로로 요청을 보낼 때 사용한다. th:object - form submit을 할 때, form의 데이터가 th:object에 설정해준 객체로 받아진다. 닉네임: 닉네임 th:fie..
-
[SpringBoot] Converter를 사용한 사용자 정보 암호화 / Cascade 옵션 설정 / 모르는 개념 공부 방법Back-end/TIL 2022. 3. 30. 09:48
스타트업 백엔드 인턴으로 근무하며 배운 내용을 까먹지 않기 위해 정리하는 글입니다. 📌 사용자 정보 암호화 회사의 데이터베이스에는 사용자에 대한 정보(이름, 전화번호 등)가 암호화되어 저장되어 있었다. 팀장님께 여쭤보니 데이터 포털 사이트에 가면 사용자 정보 암호화 관련 법률이 있어서 그것을 따라야 한다고 말씀해주셨다. ▶️ 사용자 정보를 암호화하여 데이터베이스에 저장하는 방식 A. javax.persistence.AttributeConverter 인터페이스를 구현한 클래스를 생성 & 해당 클래스를 @Convert로 지정 import javax.persistence.AttributeConverter; import javax.persistence.Convert; @Convert public class St..
-
[SpringBoot] 테스트 코드 작성에 대하여 / 멀티 모듈의 장점 / API 설계 및 배포 / 코드 작성 관련(다형성, lombok, import문)Back-end/TIL 2022. 3. 24. 09:16
스타트업 백엔드 인턴으로 근무하며 배운 내용을 까먹지 않기 위해 정리하는 글입니다. 📌 테스트 코드 작성에 대하여 테스트 코드 작성에 대해서 나는 절대적인 기준이 있다고 생각했다. 하지만 회사에서 테스트 코드를 작성하고 팀장님께 피드백을 받으며 테스트 코드 작성에는 절대적인 규칙은 없고, 상황에 따라 적절한 방식을 선택하면 되는 것임을 깨달았다. ▶️ 테스트를 위한 데이터(객체, 변수) 준비를 위한 방법: @BeforeAll vs. @BeforeEach vs. 테스트 메서드 내 //given 테스트를 수행하는데 오래 걸리지 않는 상황리아면 3가지 방식 중 어떤 것을 사용할지는 각 회사의 표준이나 개인의 취향에 따라 많이 갈리는 편이다. 성능 이슈가 발생하는 상황이나 이로인해 테스트가 깨지는 상황이 아니라..