2F(IT)/Spring Boot

REST API란

백화점장 2024. 12. 6. 22:12
반응형
※ 실제 프로젝트를 진행하며 얻은 지식을 정리한 내용입니다. 
※ 이론적인 내용보단 실무에서 사용하는 방식 위주로 작성하였습니다.
※ 잘못된 내용이 있다면 댓글로 지적 부탁드리겠습니다.

1. REST API 방식?

    1) 결론부터 설명하자면 REST API방식은 대부분 HTTP통신 + JSON 방식의 데이터 교환이다.

    2) 쓰는 이유는 시스템 간 데이터 통신을 단순하고 표준화된 방식으로 구현하기 위해 사용한다.


2. 전통적인 방식? vs REST API 방식?

    1) 전통적인 MVC 방식은 서버에서 데이터, 화면까지 모두 렌더링하는 방식이다.

    2) REST 방식은 클라이언트단에서 화면(HTML)을 별도로 서버에서는 데이터만 가져와 화면에 렌더링 하는 방식이다.

    3) 방식의 우열은 없으나 권장되는 방식은 REST 방식이다.   


3. 그래서 REST API 뭘 어떻게 하라는 거야?

    1. REST방식을 안쓴다! : Controller에서 화면을 렌더링, 데이터 모두 처리한다.

        1) 데이터는 DTO가 아닌, Map형태로 주고 받는다고 가정

@RequestMapping(value = "/test/main"), method = RequestMethod.GET)
public ModelAndView mainPage(ModelAndView mv, Map<String, Object> params) {
	
	Map<String, Object> rMap = new HashMap()<String, Object>;
    
	rMap = testService.callData(params); // 데이터 호출
 	
 	mv.setViewName("/test/main"); // 화면 파일명
	mv.addObject("data", rMap); // 데이터
    
  	return mv;
 }

        2) 코드설명

            1. rMap에 testService.callData(params)로 호출한 쿼리에서 가져온 데이터를 넣는다.

            2. mv 값에 화면 파일명, 데이터를 추가하여 리턴한다.

            3. 화면의 'data'라는 변수에 rMap값을 뿌려준다. 뷰에서 ${data}로 접근 가능하다.

 

    2. REST방식을 쓴다 ! : Controller에서는 데이터만 처리한다. 화면은 별도 생성

        1) 데이터는 DTO가 아닌, Map형태로 주고 받는다고 가정

@PostMapping("/test/main")
public Model mainPage(Model model, Map<String, Object> params) { 
	
    Map<String, Object> rMap = new HashMap()<String, Object>;
    rMap = testService.callData(params); 
 	
	model.addObject("data", rMap);
  	return model;
 }

        2) 코드설명

            1. rMap에 testService.callData(params)로 호출한 쿼리에서 가져온 데이터를 넣는다.

            2. model 값에 데이터를 추가하여 리턴한다.

            3. 화면의 'data'라는 변수에 rMap값을 뿌려준다. 뷰에서 ${data}로 접근 가능하다.


4. 결론

    1. REST API

        1) 일반적으로 프론트엔드와 백엔드가 명확히 분리된 구조에서 사용

        2) 서버는 데이터를 JSON 형식으로 반환하고, 그 데이터를 바탕으로 화면을 동적으로 렌더링함

        3) 클라이언트 주도형 UI (React, Vue.. 등)에서 강력한 장점을 제공함.

        4) 인스타그램, 트위터 등 실시간 상호작용이 중요한 화면에서 사용된다.

    2. 전통적인 MVC 방식

        1) 일반적으로 비즈니스 로직과 복잡한 데이터처리(쿼리)가 필요한 구조에서 사용

        2) 서버가 데이터를 처리하고 HTML까지 렌더링하여 클라이언트로 전달하는 구조

        3) 온라인 쇼핑몰, 은행시스템처럼 서버에서 복잡한 로직 처리가 필요한 경우 사용된다.

반응형