MSA

[MSA] Spring Boot - RestTemplate 란? 사용

차노도리 2023. 4. 23. 09:29

RestTemplate

  • Spring에서 지원하는 간편하게 Rest API를 호출할 수 있게 해주는 클래스

 

Application - Bean 등록

  • @LoadBalanced // 마이크로 서비스 이름으로 찾을 수 있게 해 줌
package com.gugbab.gugbabservices;

import ...

@SpringBootApplication
@EnableDiscoveryClient
public class GugbabServicesApplication {
	
    ...

    @Bean
    @LoadBalanced   
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }


}

 

 

RestTemplate 사용 예시

public class UserServicesImpl implements UserService {

	...
	private Environment env;
    RestTemplate restTemplate;
    
    @Autowired
    public UserServicesImpl(Environment env, RestTemplate restTemplate ...) {
		...
        this.env = env;
        this.restTemplate = restTemplate;
    }


	@Override
    public UserDto getUserByUserId(String userId, HttpHeaders headers) {
    	
        ...
        
        String vocaUrl = String.format(env.getProperty("gugbab.public.url.voca_server") + "/star/all/%s",userId);
        ResponseEntity<StarsResponse> starsResponse =
                restTemplate.exchange(vocaUrl, HttpMethod.GET, new HttpEntity<>(headers), new ParameterizedTypeReference<StarsResponse>() {
                });

        StarsResponse stars = starsResponse.getBody();
        
        ...
        
    }
    
 }