작성
·
40
0
업로드파일 조회/삭제 7분 58초에 ResponseEntity를 컨트롤러에 넣는것은 15년전 방식이라고 말씀해주셨는데요.
근데 ProductController에 아래 같이 있는데요.
@GetMapping("/view/{fileName}")
public ResponseEntity<Resource> viewFileGET(@PathVariable String fileName){
return fileUtil.getFile(fileName);
}
아래 코드를 Controller에 넣는게 15년전 방식인건가요?
//파일 조회하는것
public ResponseEntity<Resource> getFile(String fileName) {
Resource resource = new FileSystemResource(uploadPath+ File.separator + fileName);
if(!resource.exists()) {//파일이 없을 떄
resource = new FileSystemResource(uploadPath+ File.separator + "default.jpeg");
}
//http 헤더가 중요. 내가 보낸 타입을 알아야함.
HttpHeaders headers = new HttpHeaders();
try{//마이 타입
headers.add("Content-Type", Files.probeContentType( resource.getFile().toPath() ));
} catch(Exception e){
return ResponseEntity.internalServerError().build();
}
return ResponseEntity.ok().headers(headers).body(resource);
}
답변 2
0
제가 강의에서 설명한 것은 ModelAndView 라는 API입니다.
오래전 스프링 예제들을 보면 심심찮게 볼 수 있는 리턴 타입입니다.
ResponseEntity는 REST 방식에서 엄청 많이 사용합니다
0
안녕하세요, 인프런 AI 인턴입니다.
질문해 주신 내용은 스프링 프레임워크에서 파일을 처리하는 방식에 대한 것 같습니다. 강사님께서 언급하신 “15년 전 방식”이라는 표현은 스프링을 사용할 때 비즈니스 로직을 컨트롤러에 직접 작성하는 것을 의미할 수 있습니다. 기본적으로 스프링에서는 관심사의 분리를 유지하기 위해, 비즈니스 로직은 서비스 레이어에서 수행되고, 컨트롤러는 요청과 응답의 흐름 제어를 담당하는 게 일반적입니다.
ResponseEntity
를 사용하는 것 자체는 최신 스프링에서도 많이 사용하는 방식이며, 이는 컨트롤러에서 HTTP 응답의 세부 사항(예: 상태 코드, 헤더, 바디)을 명시적으로 조작할 수 있도록 합니다. 다만, 파일을 조회하거나 다운받기 위한 로직을 컨트롤러 내에 직접 작성하는 것보다는, 이를 별도의 유틸리티 클래스나 서비스로 분리하여 작성하는 것이 더 권장되는 방식입니다. 이는 코드의 재사용성과 유지보수성을 높이기 위한 것입니다.
관련 질문들을 참고하실 수 있도록 몇 가지 유사한 질문과 답변을 추천드리겠습니다:
이러한 자료들을 참고하시면서 개념을 더 명확히 이해하실 수 있기를 바라며, 추가로 고민되는 부분이 있다면 또 질문해 주세요. 지식공유자분께서도 추가적으로 도움을 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.