본문 바로가기
  • 시 쓰는 개발자
Spring

spring 개발시 RestApi 방식과 뷰템플릿방식의 차이

by poetDeveloper 2023. 3. 8.

스프링 공부를 하다보면 restapi, model, json, 뷰템플릿... 등의 이야기를 자주 듣게 되는데 이것들이 어떤 때에 사용되는 단어들인지 모르는 경우가 많다. 각각의 방식에 따라 데이터를 주고받는 형식이 다르고, 이것을 모른다면 Postman으로 기능 테스트를 진행할 때에도 올바른 기능일지라도 데이터 형식 설정을 잘못해서 오류가 나는 경우가 많아서, 이번 기회에 이것들을 간단하게 정리해보려고 한다.

 

RestApi와 JSON

https://100won-developer.tistory.com/21

 

API란 무엇인가 (+REST API)

API란? sw가 다른 sw로부터 지정된 형식으로 요청하거나, 명령을 받을 수 있는 수단. ▶ 어떤 기술이나 제품이 아니라 “형식”이기 때문에 어떤 언어나 어떤 프레임워크를 쓰든, 어떤 SW를 만들든

100won-developer.tistory.com

RestApi는 위 글을 참고하고, 여기서는 json에 대해서만 서술해본다. json은 JavaScript Object Notation의 준말로, 경량 데이터 교환 형식 또는 텍스트 기반의 형식이라고 부른다. FE와 협업을 하다보면 거의 대부분 RestApi 개발방식을 따르는데, 이때 우리가 json방식으로 데이터를 주고받게 된다. RestApi를 사용하면 클라이언트가 서버에서 데이터를 받아서 JS나 HTML 등을 활용하여 화면을 동적으로 구성할 수 있다. 즉, RestApi는 보통 FE와 협업할 때 사용하는 방식이고 이때 사용되는 것이 바로 JSON 방식의 데이터이다.

 

여기서 말하는 JSON을 좀 더 자세히 설명하면, JSON은 데이터를 key-value 형식으로 표현하며, 중첩된 구조를 가질 수 있다. 이를 통해 복잡한 데이터도 표현할 수 있습니다. 예를 들어, 게시글 목록을 조회하는 API에서는 JSON 형식으로 다음과 같이 데이터를 전송할 수 있다.

{
  "posts": [
    {
      "id": 1,
      "title": "첫 번째 게시글",
      "content": "첫 번째 게시글입니다.",
      "author": "user1"
    },
    {
      "id": 2,
      "title": "두 번째 게시글",
      "content": "두 번째 게시글입니다.",
      "author": "user2"
    }
  ]
}

위의 JSON 데이터에서는 "posts"라는 key에 해당하는 값으로 게시글 목록을 표현하고 있다. 각각의 게시글은 id, title, content, author라는 key를 가지며, 이에 해당하는 값으로 데이터가 표현된다. JSON은 텍스트 기반의 형식이기 때문에, 다양한 프로그래밍 언어에서 쉽게 사용할 수 있다. 따라서, REST API에서는 JSON 형식을 사용하여 데이터를 전송하는 것이 일반적이다.

 

 

View Template과 Model

뷰 템플릿(View Template)은 용어가 조금 생소할 수도 있는데, 서버 측에서 HTML 페이지를 생성하는 데 사용되는 기술이다. 뷰 템플릿은 서버 사이드 렌더링에 활용되는데, 서버 사이드 렌더링이란 말 그대로 서버측에서 HTML을 생성하여 클라이언트에게 전달하는 방식으로, 클라이언트는 HTML을 받아서 화면을 렌더링하는 것이다. 설명에서도 느껴지겠지만 주로 백엔드 개발자가 혼자서 BE와 간단한 FE 모두를 설정할 때 사용하는 방식이다.

 

뷰템플릿에서 사용하는 것이 바로 Model이다. 이것을 사용해 데이터를 주고받는다. Model은 서버 측에서 뷰 템플릿에서 사용할 수 있는 데이터를 포함하는 객체이다. 뷰 템플릿에서는 Model에 저장된 데이터를 사용하여 HTML을 생성하고 클라이언트에게 반환한다. 이를 통해 서버에서 HTML 페이지를 생성할 수 있다. 보통 컨트롤러에서 Model 객체를 생성하고 데이터를 저장한 다음, 뷰 템플릿으로 전달하고, 이렇게 전달된 데이터를 뷰 템플릿에서 사용할 수 있다.

 

주요 뷰 템플릿 엔진에는 다음과 같은 것들이 있다.

  • JSP(Java Server Pages)
    자바 기반의 서버 측 스크립트 언어
    JSP 파일을 컴파일하여 Servlet 코드로 변환하여 실행
    JSTL(JSP Standard Tag Library)을 사용하여 로직과 UI를 분리할 수 있음
    예: Apache Tomcat, Spring Framework
  • Thymeleaf
    HTML, XML, JavaScript, CSS 등을 처리할 수 있는 서버 측 템플릿 엔진
    자체적인 문법을 가지고 있으며, 자바 코드와 결합하여 사용할 수 있음
    예: Spring Framework
  • Freemarker
    HTML, XML, JSON 등을 처리할 수 있는 서버 측 템플릿 엔진
    자체적인 문법을 가지고 있음
    예: Apache FreeMarker
  • Velocity
    HTML, XML, JSON 등을 처리할 수 있는 서버 측 템플릿 엔진
    자체적인 문법을 가지고 있음
    예: Apache Velocity

보통 JSP와 Thymeleaf 방식이 요즘 많이 쓰이는 걸로 알고있고, 요즘은 타임리프가 가장 핫한 것으로 알고있다. 이런 뷰 템플릿 엔진으로 클라이언트는 서버에서 생성된 HTML을 받아서 렌더링하므로, 초기 페이지 로딩 시간을 단축하고 검색 엔진 최적화(SEO)에도 도움을 줄 수 있다.

 

  RestApi - Json 형식 View Template - Model 형식
랜더링 방식 클라이언트 사이드 랜더링 서버 사이드 랜더링
데이터 형식 Json Model