본문 바로가기

IT 관련 정리

[Spring Rest API 호출 방법] 서버 to 서버 파일 다운로드 RestTemplate 헤더 추가 및 예시 코드

반응형

- RestTemplate이란?
Spring에서 지원하는 객체로 간편하게 Rest 방식 API를 호출할 수 있는 Spring 내장 클래스이다.
Rest API 서비스를 요청 후 응답 받을 수 있도록 설계되어있으며 HTTP 프로토콜의 메소드(ex. GET, POST, DELETE, PUT)들에 적합한 여러 메소드들을 제공한다.

※ Spring 5.0 이후 부터는 RestTemplate는 deprecated 되어 WebClient 사용을 지향함.

 

 

 

- 서버 to 서버 파일 다운로드 예시 코드

 

// 원격 파일 다운로드 URL

URI url = URI.create(fileUrl);

 

// connection time out, read time out 셋팅

int timeout = 30000;

HttpComponentsClientHttpRequestFactory clientHttpRequestFactory

 = new HttpComponentsClientHttpRequestFactory();

    clientHttpRequestFactory.setConnectTimeout(timeout);

    clientHttpRequestFactory.setReadTimeout(timeout);

 

// RestTemplate 생성

RestTemplate rt = new RestTemplate(clientHttpRequestFactory);

ResponseEntity<byte[]> res = rt.getForEntity(url, byte[].class);

byte[] buffer = res.getBody();

 

// 파일 다운로드 관련 헤더 셋팅

res = ResponseEntity.ok()

.header(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=\"%s\"", fileName))

.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE)

.header(HttpHeaders.CONTENT_LENGTH, bufferStr).body(buffer);

 

// 파일 저장 경로 셋팅

Path target = Paths.get(filePath, fileName);

 

// 파일 다운로드 

FileCopyUtils.copy(buffer, target.toFile());

 

 

참고 :

반응형