sanhaa
sanha story
sanhaa
전체 방문자
오늘
어제
  • 분류 전체보기 (93)
    • 일상 (3)
    • Programming (42)
      • Back-end Language (32)
      • Front-end Language (8)
      • Database Language (2)
    • Etc. (35)
      • Coding Test (23)
      • Algorithm (7)
      • Data structure (1)
      • IDE (1)
      • Job Preparation (3)
    • Project (3)
    • Engineer Information Proces.. (10)
    • secret space (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바
  • DFS #백준
  • 큐
  • 정보처리기사 #정처기 #기출 #2021기출
  • 알고리즘
  • oEmebed
  • connection reset by peer
  • 연속된 자연수의 합 구하기
  • hash #java #프로그래머스 #코딩테세트 #백준
  • 신고받기
  • DDL #SQL #DB #정보처리기사 #SQL응용 #MySQL
  • JAVA #백준 #구간합
  • Spring
  • 사이드 프로젝트 #여기로모여라 #web socket #실시간 위치공유
  • 코딩테스트
  • 정처기 #DCL #SQL #DB
  • spring #java #k6 #
  • JAVA 구간 합 구하기
  • 백준 2018번
  • 시간복잡도 #JAVA #코딩테스트
  • 1253번
  • DML #정처기 #시나공 #SQL #MYSQL #SPRING #JAVA
  • 스택
  • 백준
  • 삼발자 #일상
  • 프로그래머스
  • 주몽의명령
  • iterator #
  • 투 포인트 알고리즘
  • Java

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sanhaa

sanha story

[Spring] WebClient 란?
Programming/Back-end Language

[Spring] WebClient 란?

2022. 8. 29. 22:55

WebClient란?

Webclient는 스프링 5.0에서 추가된 인터페이스이다. 5.0 이전에는 RestTemplate를 사용했었다. 하지만 스프링 5.0부터는 WebClient를 사용할 것을 권장한다.

특징

  • Json, XML을 쉽게 응답받음.
  • Non-Blocking 방식을 사용
  • 싱글 스레드 방식을 사용

예시

의존성 설정

Maven

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>org.projectreactor</groupId>
    <artifactId>reactor-spring</artifactId>
    <version>1.0.1.RELEASE</version>
</dependency>

Gradle

implementation 'org.springframework.boot:spring-boot-starter-webflux'

WebClient 생성

  • WebClient.create();
  • Builder를 활용한 클래스 생성
Webclient sanhaClient = WebClient
			.builder()
                        .baseUrl("http://locahost:8080)
                        .defaultCookie()
                        .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                        .build();

Request

WebClient.RequestHeaderUriSpec<?> baseSpec = Webclient.builder()
																								.baseUrl("주소")
																								.build()
																								.get();

// baseSpec에 원하는 파라미터를 추가로 붙여서 요청한다. 
baseSpec.uri(builder -> builder.path("/")
                               .queryParam("이름","값")
                               .builder()
                        )
                        .retrieve() // Response를 받아옴.

Method 설정

WebClient.create().method(HttpMethod.POST);
WebClient.create().post();
WebClient.create().get();

URL 설정

WebClient.create().get().uri("/resource");
WebClient.create().post().uri(URI.create("/resource"));

Parameter 으로 전달

WebClient.create().get()
	.uri(uriBuilder ->
		uriBuilder.path("/test")
			.queryParam("name", "value")
                        .build()
	).retrieve();

객체로 전달

WebClient.create().post()
	.bodyValue(loginInfo)
	.exchange();

formData로 전달

WebClient.create().post()
	.body(BodyInserters.fromFormData("id","tester").with("password","1234").with(...))
	.exchange();

// MultiValueMap
MultiValueMap map = new LinkedMultiValueMap();
map.add("key1", "value1");
map.add("key2", "value2");

WebClient.create().post()
	.body(BodyInserters.fromFormData(params))
	.exchange();

Response

  • exchange() -> ClientResponse를 상태값 그리고 헤더와 함께 가져옴
  • retrieve() -> body를 바로 가져온다.
String exchangeResponse = req.exchange().block().bodyToMono(String.class).block();
String retrieveResponse = req2.retrieve().bodyToMono(String.class).block();

* bodyToMono는 가져온 body를 Reactor의 Mono 객체로 바꿔줌 (0-1개의 결과를 처리)
*Flux는 (0-N)개의 결과를 처리
*bloc()를 사용하면 동기식으로 사용 가능


저작자표시 비영리 변경금지 (새창열림)

'Programming > Back-end Language' 카테고리의 다른 글

Apache Tomcat과 JAVA  (0) 2024.05.16
트랜잭션  (0) 2024.04.19
[Spring] @Valid를 이용한 유효성검증  (1) 2022.06.17
[JAVA] Comparable, Comparator이란?  (0) 2022.05.26
[JAVA] BufferedReader와 StringTokenizer 사용법  (0) 2022.05.09
    'Programming/Back-end Language' 카테고리의 다른 글
    • Apache Tomcat과 JAVA
    • 트랜잭션
    • [Spring] @Valid를 이용한 유효성검증
    • [JAVA] Comparable, Comparator이란?
    sanhaa
    sanhaa
    sanha history book

    티스토리툴바