문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
springframework:resttemplate [2015/01/26 15:00] kwon37xi |
springframework:resttemplate [2020/07/20 17:13] kwon37xi |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Spring RestTemplate ====== | ====== Spring RestTemplate ====== | ||
* [[https:// | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
===== HttpEntity ===== | ===== HttpEntity ===== | ||
줄 7: | 줄 11: | ||
===== POST에서 파라미터 보내기 ===== | ===== POST에서 파라미터 보내기 ===== | ||
* [[http:// | * [[http:// | ||
- | MultiValueMap< | + | MultiValueMap< |
- | map.add(" | + | parameters.add(" |
- | map.add(" | + | parameters.add(" |
HttpHeaders headers = new HttpHeaders(); | HttpHeaders headers = new HttpHeaders(); | ||
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); | headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); | ||
- | HttpEntity< | + | HttpEntity< |
- | List< | + | // 메시지 컨버터 지정 안했으면 |
- | messageConverters.add(new MappingJacksonHttpMessageConverter()); | + | // List< |
- | messageConverters.add(new FormHttpMessageConverter()); | + | // messageConverters.add(new MappingJacksonHttpMessageConverter()); |
- | restTemplate.setMessageConverters(messageConverters); | + | // messageConverters.add(new FormHttpMessageConverter()); |
+ | // restTemplate.setMessageConverters(messageConverters); | ||
LoginResponse response = (LoginResponse) restTemplate.postForObject(url, | LoginResponse response = (LoginResponse) restTemplate.postForObject(url, | ||
줄 30: | 줄 35: | ||
</ | </ | ||
+ | ===== Exception 처리 ===== | ||
+ | * [[https:// | ||
+ | <code java> | ||
+ | public class MyErrorHandler implements ResponseErrorHandler { | ||
+ | @Override | ||
+ | public void handleError(ClientHttpResponse response) throws IOException { | ||
+ | // your error handling here | ||
+ | } | ||
+ | @Override | ||
+ | public boolean hasError(ClientHttpResponse response) throws IOException { | ||
+ | // ... | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // [...] | ||
+ | |||
+ | public static void main(String args[]) { | ||
+ | RestTemplate restTemplate = new RestTemplate(); | ||
+ | restTemplate.setErrorHandler(new MyErrorHandler()); | ||
+ | } | ||
+ | </ | ||
+ | * 기본 구현체인 [[https:// | ||
+ | |||
+ | ===== Interceptor를 통한 로깅 ===== | ||
+ | * [[http:// | ||
+ | // ClientHttpRequestInterceptor 인터페이스를 로깅을 남기게 구현해서 넣어주면 된다. | ||
+ | |||
+ | RestTemplate restTemplate = new RestTemplate(); | ||
+ | restTemplate.setRequestFactory(new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory())); | ||
+ | restTemplate.setInterceptors(Lists.newArrayList(new RestTemplateLoggingInterceptor())); | ||
+ | </ | ||
+ | |||
+ | ===== SpringBoot ===== | ||
+ | * with [[springframework: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | <code java> | ||
+ | @Bean | ||
+ | public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) { | ||
+ | return restTemplateBuilder | ||
+ | .requestFactory(() -> new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory())) | ||
+ | .setConnectTimeout(Duration.ofMillis(5000)) // connection-timeout | ||
+ | .setReadTimeout(Duration.ofMillis(5000)) // read-timeout | ||
+ | .additionalMessageConverters(new StringHttpMessageConverter(Charset.forName(" | ||
+ | .build(); | ||
+ | } | ||
+ | </ | ||
+ | ===== 참조 ===== | ||
+ | * [[https:// | ||
+ | * [[https:// |