@RestController 이해하기

2021. 1. 7. 11:16·개발중/Spring Boot
728x90
반응형

@RestController 는 Spring MVC Controller에 @ResponseBode가 추가된 것.

  • RestController의 주용도는 json 형태로 객체 데이터를 반환 하는 것입니다.
  1. Client 는 uri 형식으로 웹 서비스에 요청을 보낸다.
  2. Mapping 되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 보낸다.
  3. RestController는 해당 요청을 처리하고 데이터를 반환한다.
  4. @RestControoler가 어노테이션 되어 있다면 백날천날 return 에 jsp 명을 써놔도 view의 call 은 일어나지 않는다.
  5. 그렇게 때문에 REST 방식은 Ajax와 가장 많이 결합되어 사용한다.
  6. RestController용 java를 따로 만들고 여기서는 데이터를 주고 받는 기능만 하는 경우가 대부분이다.

REST 의 개념

  • Representational State Transfer 의 약어로 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념.
  • REST 방식은 특정한 URI는 반드시 그에 상응하는 데이터 자체라는 것을 의미하는 방식이다.

@Controller의 실행 흐름

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> 

Controller -> View -> Dispatcher Servlet -> Response -> Client 

 

@ResponseBody의 실행 흐름

Client -> Request -> Dispatcher Servlet -> Handler Mapping ->

 Controller (ResponseBody)-> Response -> Client 

 

@RestController의 실행 흐름

Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> 

RestController (자동 ResponseBody 추가)-> HTTP Response -> Client

 


@RestController EX

@RestController
public class RestControllerEX {

	@GetMapping("/testpage")
    public String root(){
    	return "HELLO";
    }
}

문자열 그 자체가 반환이 된다.

 


@RestController
public class RestControllerEX {

	@GetMapping("/testpage")
    public List<Integer> root(){
    	List<Integer> mlist = new AttayList<Integer>();
        mlist.add(1);
        mlist.add(2);
        mlist.add(3);
        mlist.add(4);
        return mlist;
    }
}

문자열 뿐만 아리라 List도 반환이 가능하다.

 


@Controller EX

@Controller
public class RestControllerEX {

    @RequestMapping("/testpage")
    public String root(){
    	return "HELLO";
    }
}

우리가 알다시피 Controller + RequestMapping 사용할 경우에는 jsp 파일이 call 이 된다.

 

 

@Controller + @RequestMapping+ @ResponseBody

@Controller
public class RestControllerEX {

    @RequestMapping("/testpage")
    @ResponseBody
    public  Map<String, String> root(){
    	Map<String, String> resultMap = new HashMap<String, String>();
    	return resultMap;
    }
}

@ResponseBody 가 사용되면 Method 에서 반환하는 값은 jsp 에서 json 형태로 받아드리게 된다.

728x90
반응형

'개발중 > Spring Boot' 카테고리의 다른 글

Data → Excel 변환  (0) 2021.02.15
이클립스 Vue 프로젝트 만들기  (0) 2021.01.30
web.xml, root-context.xml, servlet.xml 차이점  (0) 2021.01.05
$(document).ready() 와 $(window).load() 차이  (0) 2021.01.05
MyBatis 에서 '#'과 '$'의 차이  (0) 2021.01.05
'개발중/Spring Boot' 카테고리의 다른 글
  • Data → Excel 변환
  • 이클립스 Vue 프로젝트 만들기
  • web.xml, root-context.xml, servlet.xml 차이점
  • $(document).ready() 와 $(window).load() 차이
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (932)
      • 개발중 (634)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    VUE
    docker
    네트워크 관리사 2급
    REST API
    리눅스 마스터
    쿠버네티스
    네트워크 관리사 요약
    리눅스 마스터 1급 정리
    쿠버네티스 스터디
    BackendDevelopment
    springboot
    네트워크 관리사 학점
    redis
    리눅스 마스터 1급
    네트워크 관리사
    리눅스 1급 요약
    파이썬
    파이썬 알고리즘
    네트워크 관리사 실기
    리눅스 마스터 요약
    스프링
    네트워크 관리사 2급 실기
    java
    Git 저장소
    git
    jpa
    Spring
    리눅스 마스터 1급 요약
    네트워크 관리사 자격증
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
@RestController 이해하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.