본문 바로가기

Web Development7

[Spring] WebClient - 2. 요청 핸들링 및 API 구성 🔗[Spring] WebClient - 1. 개념 및 기본 설정이전 장에서 기술한 WebClient 기본 설정이 완료되고 나면,이를 활용하기 위해 요청을 받고 핸들링할 수 있는 API 구성이 필요하다. 📃​ RequestHandler먼저 실제 HTTP 요청을 실행하고 핸들링하는 인프라 계층 서비스단을 작성한다.@Service@RequiredArgsConstructorpublic class RequestHandler { private final ObjectMapper mapper; /** * WebClient GET 요청 후 결과 문자열 반환 * * @param webClient WebClient * @param url String * @param para.. 2025. 2. 26.
[Spring] WebClient - 1. 개념 및 기본 설정 WebClient 란WebClient 는 Spring 5 에서 도입된 비동기적이고 논블로킹 방식의 HTTP 클라이언트이다.Spring WebFlux 스택의 일부로, Reactive 프로그래밍 모델을 지원한다.📌​ 장점 1. Non-Blocking 처리논 블로킹 방식으로 동작하여 시스템 리소스를 효율적으로 사용다수의 API 호출을 동시에 처리 2. Reactive Streams 지원Flux 와 Mono 를 통한 반응형 스트림 처리 가능백프레셔(backpressure) 기능을 제공하여 데이터 처리 과부하 제어 3. 유연한 API메소드 체이닝을 통한 직관적인 API 구성 가능다양한 요청 / 응답 변환기 제공⚠️​ 단점 1. 학습 곡선Reactive 프로그래밍 패러다임에 대한 이해 필요기존의 동기식 프로그래밍.. 2025. 2. 26.
[Web Development] SMTP 프로토콜을 통한 메일 전송 및 인증 회원 가입 시 사용자가 입력한 메일이 유효한 지 확인하기 위해 메일에 인증 코드를 전송하고, 해당 인증 코드 일치 여부를 검사하는 기능을 구현해보고자 한다. (해당 포스트에선 naver 메일로 인증을 진행한다.) 코드를 작성하기 전에 네이버 메일에 접속하여 smtp 설정이 필요하다. 메일을 전송할 네이버 계정에 로그인한 후 메일 인터페이스 하단 환경설정을 클릭한 후 위와 같이 설정하고 하단의 SMTP 포트 번호를 확인한다. 설정을 완료하면 메일 주소를 입력할 input 태그를 작성한다. onclick 이벤트를 통해 send() 함수를 실행시켜 메일 전송을 진행한다. 해당 이벤트로 발생되는 send() 함수는 아래와 같다. var result; function send() { var mail = $("#e.. 2022. 7. 1.
[Spring] MultipartFille 을 활용한 다중 파일 업로드 및 출력 다중 파일 업로드를 위해 HTTP 에서 제공하는 multipart/form-data 전송 방식을 사용하면form 태그에 담긴 각각 다른 형식의 데이터들을 구분해주므로key / value 형태의 문자 데이터와 바이너리 형태의 파일 데이터를 함께 전송할 수 있다. 이렇게 전송한 데이터는 Spring 의 MultipartFille 인터페이스를 통해 받을 수 있으며이러한 기능을 구현하기 위해서 우선 몇 가지 환경 설정이 필요하다. • 환경 설정 및 Form 태그 구성SpringBoot / Maven 기준, 파일 업로드와 io 관련 디펜던시를 추가한다. commons-fileupload commons-fileupload 1.3.3 commons-io commons-io 2.6 ap.. 2022. 6. 30.
[Spring] FlashMap 을 활용하여 Controller 간 값 전달 FlashMap 은 controller 간 redirect 시 지정한 파라미터를 전달하기 위해 Spring 3.1 버전부터 고안된 자료구조이다. 이는 값 전달 시 url 에 해당 파라미터를 노출시키지 않고, 휘발성을 지니고 있어 사용 후에 Spring 에서 자동으로 값을 지워준다는 이점이 있다. 사용법은 일반 Map 자료구조와 유사하며 그 예시는 아래와 같다. @RequestMapping("send") public String send(@RequestParam Map map, HttpServletRequest request) throws Exception { FlashMap fmOut = RequestContextUtils.getOutputFlashMap(request); int page = 1; if .. 2022. 6. 29.
[MyBatis] MyBatis 를 활용한 동적 쿼리 필터링 기능 구현 시 다중 값을 쿼리하거나 특정 값 선택 여부에 따라 동적 쿼리로 구현해야 하는 경우, 우선 MyBatis 에 넘길 객체의 요소를 아래와 같이 설정한다. @Data @Alias("clothes") public class ClothesDTO { private String keyword; private String brand; private List type; private int minCost; private int maxCost; } keyword 는 사용자가 입력한 검색어, brand 는 단일 선택 값, type 은 체크박스 다중 선택값을 List 에 담아 전달한다. minCost, maxCost 는 검색하고자 하는 특정 값의 범위를 지정한다. MyBatis 에는 다양한 동적쿼리문이 있.. 2022. 6. 28.