본문 바로가기
슬기로운 자바 개발자 생활/스프링 및 자바웹 서비스

RestTemplate와 WebClient 사용해보기

by 슬기로운 동네 형 2023. 3. 14.
반응형

RestTemplate와 WebClient 사용해보기

스프링5 부터인지 4부터인지는 모르겠으나 어쨌든 WebClient에서는 블럭킹 또는 WebFlux 방식으로 호출이 가능하다.

 

토비님의 유투브를 시청하는 중. 이런 난 스프링6이 아닌데... 하지만 그래도 복습차 webClinet 예제를 따라해본다.

 

우선 스프링 부트로 프로젝트를 만들고 어플리케이션이 시작할때 소스코드가 실행되게 하는 간단한 방법으로 테스트.

 

package com.example.demo;

import com.sun.org.apache.bcel.internal.Repository;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

import java.util.Map;

@SpringBootApplication
public class HttpInf3Application {

    //스프링 부트가 시작하면서 시작하는 코드
    @Bean
    ApplicationRunner init(){
        return args -> {
          System.out.println("Hello World!!");

            //https://v6.exchangerate-api.com/v6/4f8ca2d9fe8bc6e708235817/latest/USD

            // RestTemplate rt = new RestTemplate();
            // String res =  rt.getForObject("https://v6.exchangerate-api.com/v6/4f8ca2d9fe8bc6e708235817/latest/USD", String.class);
            // System.out.println(res);

            RestTemplate rt = new RestTemplate();
            Map<String, Map<String, Double>> res =  rt.getForObject("https://v6.exchangerate-api.com/v6/4f8ca2d9fe8bc6e708235817/latest/USD", Map.class);
            System.out.println(res.get("conversion_rates").get("KRW"));

            //WebClient 스타일로 받아 모노 맵으로 받는다. 리액티브 방식
            WebClient client = WebClient.create("https://v6.exchangerate-api.com");
            Map<String, Map<String, Double>> res2 = client.get().uri("/v6/4f8ca2d9fe8bc6e708235817/latest/USD").retrieve().bodyToMono(Map.class).block();
            System.out.println(res2.get("conversion_rates").get("KRW"));

            //spring6 HTTP Interface

        };
    }

    public static void main(String[] args) {
        SpringApplication.run(HttpInf3Application.class, args);
    }

}

예제에 사용된 사이트 정보

https://app.exchangerate-api.com/dashboard 

 

ExchangeRate-API - Sign In

About Getting currency conversion data by API has been made easy since ExchangeRate-API was launched in 2010. Since then our service has responded to many billions of requests sent by tens of thousands of developers. Our exchange rate API's high uptime and

app.exchangerate-api.com

 

Json으로 아래와 같은 API (USD 기준 환율 정보)

반응형

댓글