푸린세스

@RestController의 반환타입 본문

spring/구멍가게코딩단-스프링

@RestController의 반환타입

푸곰주 2023. 5. 9. 11:00

@RestController의 반환타입

 

1. 단순문자열 반환

@RestController:

JSP와 달리 순수한 데이터를 반환하는 형태

다양한 포맷의 데이터 전송가능 (주로 일반문자열, JSON,XML 등을 사용)

 

@Controller -> String으로 문자열반환시 jsp파일이름

@RestController -> 문자열 반환시 순수한 데이터

 

@RestController
@RequestMapping("/sample")
@Log4j
public class SampleController {

	@GetMapping(value= "/getText", produces="text/plain; charset=UTF-8")
	public String getText() {
		log.info("MIME TYPE: "+ MediaType.TEXT_PLAIN_VALUE);
		return "안녕하세요";
		
	}
}

localhost:8080/sample/getTest : produces속성값으로 지정된 text/plain 결과가 나오는걸 확인할수있다.

2. 객체를 반환

 

객체를 반환시 JSON이나 XML을 이용한다.

 

 

	@GetMapping(value="/getSample", produces= {MediaType.APPLICATION_JSON_UTF8_VALUE, MediaType.APPLICATION_XML_VALUE})
	public SampleVO getSample() {
		return new SampleVO(112, "스타", "로드");
	}
	
	@GetMapping(value="/getSample2")
	public SampleVO getSample2() {
		return new SampleVO(112, "스타", "로드");
	}

http://localhost:8080/sample/getSample.json
http://localhost:8080/sample/getSample, http://localhost:8080/sample/getSample2

기본 반환되는 형태가 XML이다?

 

 

 

 

3.컬렉션 타입객체반환

여러 데이터를한번에 전송하기 위해서

배열,List,Map 타입의 객체를 전송한다.

	@GetMapping(value="/getList")
	public List<SampleVO> getList(){
		return IntStream.range(1,10).mapToObj(i -> new SampleVO(i, i+" First", i+" Last")).collect(Collectors.toList());
	}
	
	
	@GetMapping(value= "/getMap")
	public Map<String, SampleVO> getMap(){
		Map<String, SampleVO> map = new HashMap<>();
		
		map.put("First", new SampleVO(111, "그루트", "주니어"));
		
		return map;
	}

 

4. ResponseEntity타입

Rest방식으로 호출 하는 경우 -> 서버는 브라우저에게 화면 자체가 아니라 데이터를 전송한다.

데이터를 요청한 브라우저쪽에서는 정상적인 데이터인지 비정상적 데이터인지를 구분할 수 있는 확실한 방법을 제공해야한다.

 

ResponseEntity : 데이터 + HTTP헤더상태메세지를 같이 전달하는 용도로 사용한다.

받는 입장에서는 확실하게 결과를 알수있다.

 

	@GetMapping(value="/check", params = {"height", "weight"})
	public ResponseEntity<SampleVO> check(Double height, Double weight){
		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);
		}
		
		return result;
		
		
		
	}

 

http://localhost:8080/sample/check.json?height=140&weight=50 => 502메세지와 데이터가 전달된다.

{

  •   "mno": 0,
  •   "firstName": "140.0",
  •   "lastName": "50.0"

}

'spring > 구멍가게코딩단-스프링' 카테고리의 다른 글

ReplyMapperTests  (0) 2023.05.09
mybatis 검색.->totalCount 바꾸기.  (0) 2023.05.08
페이징화면 처리 (14장)  (0) 2023.05.06
rownum과 index  (0) 2023.05.06
MySQL ~ log4jdbc 설정하기.  (0) 2023.05.03