본문 바로가기
Spring공부/1-REST

REST방식(4)

by 으노으뇨 2021. 10. 6.
728x90
반응형
SMALL

컬렉션 타입의 객체 반환

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

이렇게 502 메시지와 데이터가 전달된다./ 정상이라면 200코드와 데이터를 전성하게된다.

-객체반환

-ResponseEntity타입

728x90
반응형
LIST

'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

댓글