728x90
현재 개발하고 있는 코드에 RestTemplate을 사용하고 있는 부분이 있다.
찾아보니 WebClient를 쓰는 것을 권하는 것 같은데, 프로젝트의 스프링 버전이 4.3.3이라 사용할 수 없지만,
미리 공부해두면 좋을 거 같아서 기록을 남기려고 한다.
RestTemplate
HttpAccessor > InterceptingHttpAccessor 아래에 있는 Spring Framework의 클래스
Client의 HTTP 요청 동기화, 기본 HTTP Client 라이브러리를 통한 템플릿 메서드 (JDK의 HttpURLConnection 같은)
HTTP에서 기본적으로 제공하는 메소드를 제공하고, 일반화 된 exchange와 execute메서드가 추가되어있다.
참고로, 스프링 5.0 부터는 유지 보수 정도만 하며, 앞으로는 변경 및 버그에 대한 사소한 수정만 있을 예정이라고 한다. WebClient가 보다 최신 API이고 동기, 비동기 및 스트리밍 시나리오를 지원하기 때문에 사용을 장려한다.
- 스프링 3.0부터 제공
- 동기 방식
- 간편하게 REST 방식 API를 호출할 수 있는 spring 내장 클래스
주요 메서드
메서드 | 설명 |
getForEntity | GET 요청을 하고 ResponseEntity를 반환 |
getForObject | GET 요청을 하고 Object를 반환 |
getMessageConverters | message body converters의 리스트를 반환 |
headForHeaders | URL 템플릿에 headers 반환 |
postForObject | POST 요청을 하고 ResponseEntity를 반환 |
postForObject | POST 요청을 하고 Object를 반환 |
postForLocation | POST 요청을 하고 헤더에 저장된 URI를 결과로 반환 |
put | PUT 요청을 실행 |
patchForObject | PATCH를 실행 |
exchange | HTTP 헤더를 새로 만들 수 있고 어떤 HTTP 메서드 사용 가능 |
execute | Request/Response 콜백을 수정할 수 있음 |
WebClient
interface 이고, Non-Blocking하게 Client의 HTTP 요청을 처리한다. (Netty 처럼)
static factory methods는 create(), create(String), builder()가 있다.
response body는 다음의 메서드를 사용한다
- retrieve()
- exchangeToMono()
- exchangeToFlux()
request body는 다음의 메서드를 사용한다.
- bodyValue(Object)
- body(Publisher, Class)
- 스프링 5.0부터 제공
Reference
https://backtony.github.io/spring/2021-07-12-spring-basic-8/
728x90
'Spring' 카테고리의 다른 글
Builder 패턴 (0) | 2022.09.02 |
---|---|
ResponseEntity (0) | 2022.09.02 |
Exception 공부 (0) | 2022.08.31 |
@RequestParam, @PathVariable (0) | 2022.08.19 |
HttpClient, HttpEntity (0) | 2022.08.18 |