728x90
@RestController 반환타입
- JSP와 달리 순수한 데이터를 반환하는 형태이므로 다양한 포맷의 데이터 전송 가능
- 주로 많이 사용 형태 : 일반문자열, JSON, XML 등
- produces는 MIME TYPE을 의미
일반 문자열 반환
- @Controller에서는 문자열 return값이 jsp 파일의 이름으로 처리되지만, @RestController에서는 순수한 문자열로 처리 됨
- SampleController.java
package org.zerock.controller;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.log4j.Log4j;
@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 "안녕하세요";
}
}
객체 반환
- SampleVO.java
package org.zerock.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SampleVO {
private Integer mno;
private String firstName;
private String lastName;
}
- SampleController.java
- /sample/getSample 로 호출하는 경우 json 타입의 데이터가 전달되는 것을 확인 할수 있음
- /sample/getSample.json 으로 호출하는 경우 json 타입의 데이터가 전달되는 것을 확인 할수 있음
@GetMapping(value="/getSample", produces={MediaType.APPLICATION_JSON_UTF8_VALUE, MediaType.APPLICATION_XML_VALUE})
public SampleVO getSample() {
return new SampleVO(112, "스타", "로드");
}
- SampleController.java
- produces 생략가능 (결과는 위와 같음)
@GetMapping(value="/getSample2")
public SampleVO getSample2() {
return new SampleVO(112, "스타2", "로드2");
}
컬렉션 타입의 객체 반환
- SampleContoller.java
@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;
}
ResponseEntity 타입
- SampleController.java
- REST 호출 방식의 경우 데이터 자체를 전송하는 방식으로 처리되기 때문에 데이터를 요청한 쪽에서 정상적인 데이터인지 비정산적인 데이터인지 구분할 수 있는 방법이 필요
- 예제의 경우 height값이 150 미만인 값을 파라미터로 받게되면 502 에러를 같이 보냄(개발자도구 - 네트워크에서 확인 가능)
@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;
}
728x90
'개발 지식 > Memo' 카테고리의 다른 글
REST API JunitTest(MockMvc) (0) | 2022.01.27 |
---|---|
MockMvc Annotation 정리 (0) | 2022.01.26 |
REST Annotation 정리 (0) | 2022.01.25 |
String to Double Array (String -> Double[]) 변경 (0) | 2021.05.26 |
String to Int Array (String -> int[]) 변경 (0) | 2021.05.26 |