230530 SpringBoot WebClient

Myung A Lee·2023년 5월 31일
0

SpringBoot

목록 보기
5/8
post-thumbnail

SpringBoot

API란

  • API(Application Programming Interface)는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 것으로 일반적으로 클라이언트와 서버 측면에서 설명된다. 요청을 보내는 애플리케이션을 클라이언트라고 하고 응답을 보내는 애플리케이션을 서버라고 한다.

REST API

  • REST는 Representational State Transfer의 줄임말로 REST는 클라이언트가 서버 데이터에 액세스 하는데 사용할 수 있는 GET/POST/PUT/DELETE/PATCH 등의 함수 집할을 정의한다.
  • REST API는 URL을 통해 원하는 정보를 얻어오거나 특정한 요청을 하는 것으로 Client와 Server 사이에 일어나지만 Server와 Server 사이에도 일어날 수 있다.

WEBCLIENT

  • WebClient는 Spring5.0부터 지원한다.
  • HttpConnecttion -> RestTemplate -> WebClient(webFlux)
  • WebClient는 non-blocking (비동기)방식을 지원하며, 속도가 빠르다.
  • 흐름
    - 클라이언트의 요청 -> 요청을 받은 A 서버가 B 서버에게 요청 -> 요청을 받은 B서버는 A서버에게 응답 -> 응답을 받은 A서버가 클라이언트에게 응답

전송 메서드 종류

  • retrieve() : body 값만 가져온다. header/status방식도 따로 존재
  • exchange() : body + header + status 등도 가져온다.

Mono에서 값을 꺼내는 방식

  • bodyToMono : 데이터가 한번에 0~1 개 처리 될 경우 (동기식)
  • bodyToFlux : 데이터가 한번에 여러개 처리 될 경우 (비동기식)
public HashMap<String, String> getSend(String msg) {

		// 1. 전송할 URL 설정(현재는 같은 서버를 이용)
		WebClient client = WebClient.create("http://localhost");
		
		// 2. 전송받식 (). 요청URI(uri) .전송() . 받아올 방식(형태, 처리방식)
		Mono<HashMap> mono = client.get().uri("/return/"+msg).retrieve().bodyToMono(HashMap.class);
       
       // 3. 응답 받은 값 꺼내기 
		HashMap<String, String> resp = mono.block();
       
		logger.info("resp : {}",resp);
		
		return resp;
	}

WebClient를 이용하여 서버간의 통신 구현 해 보기

Client의 요청을 Server에서 받아 다른 Server에 요청을 보내고 그 응답 값을 Client에게 다시 전달 .
https://velog.io/@leema0927/230531-WebClient

0개의 댓글