Spring Boot로 API를 제작 중인데, 저장된 이미지를 제공해주는 부분에서 막혔습니다
조회수 618회
최근 spring-boot를 이용해 백엔드를 작성해보는 실습을 해보는 중입니다. url을 입력하면 json형태의 데이터를 제공하는 모양새입니다.
아직 완전 초기라서 따로 연결한 DB는 없구요, 제가 하고싶은 부분은 url을 입력하면 제 프로젝트의 images폴더 안의 특정 이미지를 띄워주는 일입니다. 최종적으로 이미지나, 받아온 데이터를 가공한 View를 클라이언트에게 보여주는 일은 프론트엔드에서 할 텐데, 이를 고려해서 이미지를 넘겨주는 일을 하고 싶은 거에요.
질문을 올리기 전에 어느정도 검색을 해서 따라해보았습니다.
..../restaurants/img1 이라는 url을 입력하면 src/main/resources/images폴더 안의 clock.jpg를 넘겨주려고 해보았는데, 아래는 제가 검색해서 작성했던 메서드와 그 테스트코드입니다.
@RequestMapping(value = "/restaurants/img1", method = RequestMethod.GET,
produces = MediaType.IMAGE_JPEG_VALUE)
public @ResponseBody byte[] img() throws IOException {
InputStream in = InputStream.class.getResourceAsStream("/images/clock.jpg");
byte[] result = IOUtils.toByteArray(in);
return result;
}
@Test
public void getimg() throws Exception {
mvc.perform(get("/restaurants/img1"))
.andExpect(status().isOk());
}
테스트는 통과가 되었는데, 실제로 heroku에 배포해서 url을 입력해보면 아래와 같은 결과가 나옵니다..
테스트 코드의
mvc.perform(get("/restaurants/img1"))
.andExpect(status().isOk());
이 부분이 status가 200인지 테스트 하는 줄로 알고있는데, 이 테스트는 통과하면서 실제로 실행해보면 status가 500이라고....
어디서부터 꼬인건지 뭘 잘못하고 있는건지 감을 못 잡겠어요..
답변 감사합니다. 지금은 저 실습은 저 상태에서 중단 상태로 있고 학교 생활에 집중하고 있어요ㅠㅠ 종강하면 참고해서 다시 열심히 해보겠습니다! 김현우 2019.11.2 01:28
댓글 입력