문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
springframework:resttemplate [2014/10/31 17:20] kwon37xi |
springframework:resttemplate [2022/01/14 15:43] (현재) kwon37xi |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Spring RestTemplate ====== | ====== Spring RestTemplate ====== | ||
| * [[https:// | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * see [[springframework: | ||
| ===== HttpEntity ===== | ===== HttpEntity ===== | ||
| * [[http:// | * [[http:// | ||
| + | |||
| + | ===== POST에서 파라미터 보내기 ===== | ||
| + | * [[http:// | ||
| + | MultiValueMap< | ||
| + | parameters.add(" | ||
| + | parameters.add(" | ||
| + | |||
| + | HttpHeaders headers = new HttpHeaders(); | ||
| + | headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); | ||
| + | |||
| + | HttpEntity< | ||
| + | |||
| + | // 메시지 컨버터 지정 안했으면 | ||
| + | // List< | ||
| + | // messageConverters.add(new MappingJacksonHttpMessageConverter()); | ||
| + | // messageConverters.add(new FormHttpMessageConverter()); | ||
| + | // restTemplate.setMessageConverters(messageConverters); | ||
| + | |||
| + | LoginResponse response = (LoginResponse) restTemplate.postForObject(url, | ||
| + | |||
| + | // ParemeterizedTypeReference를 사용하여 복잡한 Generic Type 으로 요청 결과 받기 | ||
| + | public ParameterizedTypeReference< | ||
| + | new ParameterizedTypeReference< | ||
| + | |||
| + | restTemplate.exchange(url, | ||
| + | </ | ||
| + | |||
| + | ===== 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:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||