-
RestTemplateBackEnd/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)
RestTemplate (정의, 특징, URLConnection, HttpClient, 동작원리, 사용법, connection pool 적용)
반응형'BackEnd > MSA Communications' 카테고리의 다른 글
FeignClient (0) 2022.07.23