ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • RestTemplate
    BackEnd/MSA Communications 2022. 7. 20. 04:51
    반응형

    RestTemplate

    • Spring 3.0부터 지원됩니다.
    • HTTP 요청을 수행하는 Blocking I/O 기반의 동기 방식을 사용하는 클라이언트입니다.
    • 간편하게 REST 방식의 API를 호출할 수 있는 Spring 내장 클래스입니다.
    • Json, Xml, String과 같은 응답을 받을 수 있는 템플릿입니다.
    • Spring 4.0에 비동기RestTemplate(AsyncRestTemplate) 추가되었으나 Spring 5.0에서 deprecated 되었습니다.

     

    Note. Spring 5.0부터 RestTemplate는 Maintenance 모드입니다. 동기(sync), 비동기(async) 및 스트리밍 시나리오(streaming scenarios)를 지원하는 org.springframework.web.reactive.client.WebClient 사용을 고려합니다.

     

    RestTemplate 의존성

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

     

    RestTemplate 생성자

      RestTemplate은 아래와 같이 세 가지 생성자를 제공합니다.

      생성자를 통해 Spring에 Bean으로 등록합니다.

    package com.example.userservice;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class UserServiceApplication {
    
      public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
      }
    
      @Bean
      public RestTemplate getRestTemplate() {
        return new RestTemplate();
      }
    
    }

     

    RestTemplate 메서드

      RestTemplate은 표준 HTTP 메서드(GET/POST/PUT/PATCH/DELTE/HEAD/ANY/OPTIONS)에 대응하는 적어도 한 개 이상의 메서드를 제공합니다. 전체 메서드는 RestTemplate (Spring Framework 5.3.22 API)를 참고하시면 됩니다.

      RestTemplate을 주입 받아 Json 샘플 데이터를 호출하는 코드는 아래와 같습니다.

    UserController.class

    package com.example.userservice;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.env.Environment;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    @RestController
    @RequestMapping("/")
    public class UserController {
    
      private final Environment env;
      RestTemplate restTemplate;
    
      @Autowired
      public UserController(Environment env, RestTemplate restTemplate) {
        this.env = env;
        this.restTemplate = restTemplate;
      }
    
      @GetMapping("/welcome")
      public String welcome() {
        String configMessage = env.getProperty("greeting.message");
    
        System.out.println(restTemplate.getForObject("https://jsonplaceholder.typicode.com/todos/1",
            RestTemplateResponse.class));
    //    restTemplate.getForObject("url", Object.class);
    //    restTemplate.postForObject("url", "Request.class", Object.class);
    //    restTemplate.put("url", "Request.class");
    //    restTemplate.delete("url");
    
        return "Hello, User-service: " + configMessage;
      }
    }

    RestTemplateResponse.class

    package com.example.userservice;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class RestTemplateResponse {
    
      Integer userId;
      Integer id;
      String title;
      boolean completed;
    
    }

     

     

     

    RestTemplate (Spring Framework 5.3.22 API)

    GeeksforGeeks - RestTemplate

    RestTemplate과 WebClient

    RestTemplate (정의, 특징, URLConnection, HttpClient, 동작원리, 사용법, connection pool 적용)

     

    반응형

    'BackEnd > MSA Communications' 카테고리의 다른 글

    FeignClient  (0) 2022.07.23

    댓글

Designed by Tistory.