모바일 환경의 큰 성장으로 인한 서버에 대한 요구사항 변화.
과거 서버의 역할
현대 서버의 역할 변화
예시
/Students/getList
REST 방식으로 설계된 URL이라면 위 URL로 요청했을 때 Student의 리스트를 반환할 것이라 예상할 수 있습니다.
spring도 rest 방식의 데이터 처리를 지원합니다.
기존의 컨트롤러는 클래스에 @Controller 어노테이션을 붙였습니다.
@Controller는 model에 데이터를 담아서 view로 전달했습니다.
리턴의 용도는 주로 view의 jsp의 경로를 명시하는 것이었습니다.
@RestController가 붙은 클래스는 모델로 반환하는 것이 아니라 곧바로 데이터를 반환합니다.
GetMapping(value="/{rno}",produces= {
MediaType.APPLICATION_XML_VALUE,
MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<ReplyVO> get(@PathVariable("rno") Long rno){
...
}
데이터를 요청한 클라이언트가 서버가 반환한 데이터가 정상적으로 처리된 데이터인지 확인하기 위해 사용됩니다.
service.remove(댓글번호)를 호출해서 정상 처리됐다면 OK 상태와 데이터를, 아니면 서버에러 상태와 데이터(비정상) ResponseEntity타입에 실어서 보냅니다.
example
@DeleteMapping(value="/{rno}",produces= { MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE}) public ResponseEntity<String> remove(@PathVariable("rno") Long rno){ log.info("remove:" +rno); return service.remove(rno)==1 ? new ResponseEntity<>("success",HttpStatus.OK) : new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); }
크롬 확장 도구 중에 "Yet Another Rest Client"를 이용해서 rest 방식의 요청을 test 해볼 수 있습니다.