컬렉션 타입의 객체 반환
produce 속성은 반드시 지정해야 하는 것은 아니여서 생략했더니 동일한 화면값을 얻었다.
경우에 따라서는 여러 데이터를 한 번에 전송하기 위해서 배열이나 리스트, 맵 타입의 객체들을 전송하는 경우도 발생한다.
@GetMapping(value = "/getList")
public List<SampleVO> getList() {
log.info("MIME TYPE : " + MediaType.TEXT_PLAIN_VALUE);
return IntStream.range(1, 10).mapToObj(i -> new SampleVO(i, i + "First", i + "Last"))
.collect(Collectors.toList());
}
getList()는 내부적으로 1부터 10미만까지의 루프를 처리하면서 SampleVO객체를 만들어서 List<SampleVO>를 만들어낸다.
브라우저를 통해서 'sample/getList'를 호출하면 기본적으로 XML데이터를 전송하는 것을 볼 수 있다. 뒤의 확장자를 json으로 처리하면 json으로 짜여진 형태의 배열 데이터를 볼 수 있다.
맵의 경우에는 키와 값을 가지는 하나의 객체로 간주한다.
@GetMapping(value = "/getMap")
public Map<String, SampleVO> getMap() {
log.info("MIME TYPE : " + MediaType.TEXT_PLAIN_VALUE);
Map<String, SampleVO> map = new HashMap<>();
map.put("First", new SampleVO(111, "java", "python"));
map.put("second", new SampleVO(112, "git", "github"));
map.put("third", new SampleVO(113, "btc", "eth"));
log.info(map);
return map;
}
ResponseEntity타입
Rest방식으로 호출하는 경우는 화면 자체가 아니라 데이터 자체를 전송하는 방식으로 처리되기 때문에 데이터를 요청한 쪽에서는 정상적인 데이터인지 비정상적인 데이터인지를 구분할 수 있는 확실한 방법을 제공해야만 한다.
ResponseEntity는 데이터와 함께 HTTP 헤더의 상태 메시지를 등을 같이 전달하는 용도로 사용한다. Http의 상태 코드와 에러 메시지 등을 함께 데이터를 전달할 수 있기 때문에 받는 입장에서는 확실하게 결과를 알 수 있다.
@GetMapping(value = "/check", params = { "height", "weight", })
public ResponseEntity<SampleVO> check(Double height, Double weight) {
log.info("MIME TYPE : " + MediaType.TEXT_PLAIN_VALUE);
SampleVO vo = new SampleVO(0, "" + height, "" + weight);
ResponseEntity<SampleVO> result = null;
if (height < 150) {
result = ResponseEntity.status(HttpStatus.BAD_GATEWAY).body(vo);
} else {
result = ResponseEntity.status(HttpStatus.OK).body(vo);
}
log.info("키 : " + height + ", 무게 : " + weight);
return result;
}
필자의 스펙을 넣어보았다. http://localhost:8080/sample/check?height=182&weight=80
JSON 타입으로 받을 수 있따.
http://localhost:8080/sample/check.json?height=182&weight=80
이떄 키를 150미만인 140을 입력하고 개발자모드를 보면
http://localhost:8080/sample/check.json?height=80&weight=80
-객체반환
-ResponseEntity타입
'Spring공부 > 1-REST' 카테고리의 다른 글
REST방식(6)-Ajax댓글처리 (2) | 2021.10.07 |
---|---|
REST방식(5) (0) | 2021.10.07 |
REST방식(3) (0) | 2021.10.06 |
REST방식(2)-의존성주입 (0) | 2021.10.06 |
REST방식(1) (0) | 2021.10.06 |
댓글