진짜 개발자
전체방문자

585,882

today 766
yesterday 681
본문 바로가기

전체 글 (총 547개)

Spring Boot - REST API 인증 - 2 (Refresh Token이란?) jwttoken 이번 포스팅에서는, JWT Token을 이용한 REST API 인증 후, Token이 만료된 경우의 처리 방법에 대해 알아보겠습니다. REST API 인증 1 - https://galid1.tistory.com/638위의 링크를 통해 REST API 인증 과정을 숙지하고 오시면 더욱 이해가 쉽습니다. 1. Refresh Token을 사용하지 않는 경우우선 인증 과정은 위와 같습니다. 토큰이 만료되었다면?토큰이 만료되었다면, 사용자의 로그인 세션이 만료된것과 마찬가지이므로, 로그인을 재차 시도해야합니다. 위의 방법은 잘못 되었다why ?이 방법은 토큰이 만료될때마다 사용자가 다시 로그인을 해야합니다. 그러나, 사용자가 로그인을 할때에는 사용자의 아이디 비밀번호가 이용되는데, 이정보는 네트워..
Spring Boot - 개발자를 기억하게하지 말자 (파일리스트와 데이터리스트 요청을 하나의 객체로 바인딩하기 : @ModelAttribute) file과 data를 객체로 바인딩하기 Spring을 이용해 Rest API 개발중, file과 data를 같이 업로드해야 하는 상황이 있었습니다. file과 data는 논리적으로 연관관계가 있었으며, 이를 List형태로 전송하는 경우, 각각의 인덱스 요소가 논리적으로 같은 데이터임을 기억해야하는 상황이었습니다.이때 이들을 하나의 객체로 맵핑하여 이 조건을 개발자가 기억하지 않아도 되도록 변경하였습니다. 1. 시나리오예를들어, 어떤 팀에 멤버를 추가하는 상황에서 멤버의 프로필 정보와, 사진을 같이 받아야 한다고 할때. 클라이언트는, 서버에게 사용자의 프로필정보(data)와 사진(file)을 함께 전송해야 합니다. 1.1 중요 사항이때, 멤버의 사진과 프로필 정보는, 논리적으로 연..
ApplicationKnowhow/Server - 사용자 입력 값 검증방법과 노하우 검증 서버를 개발하며 그 동안 값 검증을 하면서 의문이 드는 점과, 노하우라면 노하우라 할 수 있는 얕은 지식을 공유 하려고 합니다. 1. Front-end에서 값 검증을 해서 넘겨주는데 Back-end에서도 해야하나요? A. 둘다 해야합니다. 프론트에서 하는 검증은 사용자의 경험을 위해서 해야하며, 백엔드에서는 프론트에서 전달받은 값이 중간에 변형될 우려가 있어 해야합니다. 2. 값 검증을 어느 계층에서 수행해야 하나요?A. 값이 처음 들어오는 곳에서 해야합니다.값 검증은, 데이터가 처음 들어오는 곳에서 한번 수행합니다. Layered Architecture를 예로 들자면, 사용자가 값을 입력하는 Presentation 계층에서 값 검증을 수행합니다. 추가적으로, Repository에서 가져온 ..
Spring - AOP를 이용해 도메인과 Mobile Push 알림 기능을 분리하자 push aop 이번 포스팅에서는, App Server에서 도메인 기능과 완전히 분리하여, Push 알림 요청 기능을 확장한 과정을 기술하려고 합니다. 도메인과 Push 알림을 분리하자Push 알림은 도메인과 완전히 상관이 없는 개념입니다. 따라서, Push 알림이 도메인 로직에 의존해서도, 도메인 로직이 Push 알림에 의존해서도 안됩니다. 1. 기존의 아키텍쳐기존의 아키텍쳐는 DDD의 Layered Architecture를 이용해 설계가 되어있었습니다.각 계층은 아래로의 의존만을 가지며, infra(저수준 모듈의 구현) 계층의 필요한 구현은 DIP를 이용해 Application, Domain이 infra(저수준 모듈)에 의존하는 것이 아니라, infra가 고수준 모듈에 의존하도록 했습니다. 2. 문제..
DDD - 도메인 모델 변경 과정 정리 Tour-cash 도메인 모델 변경 v1(카드, 분실 분리) 도메인 모델 변경도메인 모델은 처음부터 완벽하게 구현하기가 무척 어렵습니다. 거의 불가능에 가깝다고 책에도 소개됩니다. 따라서 처음에는 개요를 알 수 있는 수준으로 개념모델을 구현하고, 운영하며 얻게되는 도메인 지식을 바탕으로 점차 구현모델에 가깝게 변형해 나가야 합니다. 이번 포스팅에서는 서비스를 운영하며 얻게된 지식을 바탕으로 도메인 모델을 변경한 것을 정리해보려고 합니다. 서비스 소개업무 기밀이 누설 될수도 있는 관계로 서비스의 대략적인 설명만을 적겠습니다. 1. 외국 고객에 대한 환급 서비스입니다. 2. 고객은 지급된 카드를 통해 결제를 하며, 카드 사용내역을 확인할 수 있습니다. 3. 사용내역에서 환..
Spring Boot - Mockito를 이용해 외부라이브러리를 이용하는 서비스 테스트하기 Third Party Lib 외부 라이브러리에에 의존하는 서비스를 통합테스트 하고 있었습니다. 이때 발생했던 문제를 Mockito를 이용해 처리하는 과정을 정리해보도록 하겠습니다. 시나리오해외에서 여행을 온 관광객이 물건을 구매하고, 환급을 요청합니다.요청된 환급을 관리자가 검증합니다.검증이 완료되면, 사용자의 MobileApp에 Push알림이 전송됩니다.테스트를 진행할 도메인은 위와 같습니다. 테스트할 메소드xxxxxxxxxx@Service@Transactional@RequiredArgsConstructorpublic class AdminRefundEstimateService { // ... private final FirebasePushService pushService;​ public void es..