파란하늘의 지식창고
반응형

HttpStatus가 302 인 경우 브라우저에서는 해당 페이지로 리다이렉트 되어 화면이 처리된다.
restTemplate으로 요청한 응답 결과의 HttpStatus가 302 인 경우는 해당 페이지로 리다이렉트 되지 않고 응답 결과만 반환받는다.

하지만 redirect된 결과로 응답을 받을 수 있는 기능이 있다.
restTemplate에서 requestFactory를 apacheml httpclient를 사용하는 경우 지원되는 기능이다.

다음처럼 HttpClientBuilder에 redirectStrategy 설정을 하면 요청된 결과가 302인 경우 해당 페이지로 리다이렉트 된 결과를 반환해준다.

RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
HttpClient httpClient = HttpClientBuilder.create()
        .setRedirectStrategy(new LaxRedirectStrategy())
        .build();
factory.setHttpClient(httpClient);
restTemplate.setRequestFactory(factory);

okHttp를 requestFactory로 사용하는 경우 redirect 처리가 기본 설정이다.

302 redirect를 직접 처리할지 아니면 라이브러리에서 제공하는 설정을 통해 처리를 할지는 개발하면서 상황에 따라 결정해야 한다.

반응형
profile

파란하늘의 지식창고

@Bluesky_

내용이 유익했다면 광고 배너를 클릭 해주세요