[REST API] REST API 와 RESTful 그리고 우리 프로젝트로의 적용...

·2024년 2월 5일

Spring Boot

목록 보기
1/4
post-thumbnail

REST API 의 기초 개념을 말하자면, 서버에서 모든 화면의 결과를 만들어내는 방식은 점차 줄어드는 반면에 서버에서 순수한 JSON 데이터만들 제공하고 앱과 웹에서 같은 데이터를 이용하는 방식이다.

그러므로 서버와 클라이언트의 역할 분배가 적극적으로 이루어지는데, 이의 핵심은 우선 "문자열" 이다. 문자열은 어떠한 프로그래밍 언어나 기술에 종속되지 않는다는 장점이 있다.

문자열을 이용하면 데이터를 주고받는 것에는 문제가 없지만, 문자열로 복잡한 구조의 데이터를 표현하는 문제가 발생한다. 이를 고려하여 사용하는 것이 XML 과 JSON 이다.

그럼 REST 방식은 무엇인가?

1. REST 방식

REST 방식은 클라이언트 프로그램인 브라우저나 앱이 서버와 데이터를 어떻게 주고받는 것이 좋을지에 대한 가이드라고 할 수 있다.
예를 들어 기존 방식에서 /board/modify 가 게시물의 수정이라는 행위와 목적이라는 표현을 하였다면, REST 방식에서는
/board/123 이 게시물 자원 자체를 뜻하며 PUT 방식(@PutRequset)이 행위나 목적을 뜻하게 된다.

2. RESTful

RESTful (Representational State Transfer) 은 효율적, 안정적임 확장 가능한 분산 시스템을 가져올 수 있는 소프트웨어 아키텍처 디자인 제약의 모음을 나타낸다. 그리고 그 제약들을 준수했을 때 그 시스템은 RESTful 하다고 일컬어진다.

앞으로 GET, POST 방식은 어떤 일을 수행하고 싶은가를 표현 하는 것이고, url 은 특정한 자원을 의미하게 된다.

과거에 '?'을 이용하는 쿼리 스트링으로 해당 번호를 전송하는 방식과 다르게 RESTful 한 방식은 주소의 일부로 직접 자원을 표현한다.

url 은 하나의 작업을 실행할 수 있는 고유한 값이고, GET/POST/PUT/DELETE 는 이에 대한 작업을 의미하는 것이다.

ozHouse 프로젝트와의 결합

여기서 문제가 생긴 게... 우리는 jstl 를 전부 thymeleaf 로 고칠 자신이 없고 또 시간이 매우매우매우 부족하다.
그래서 jsp 와 restAPI 의 목적이 상충되지만 혼용해 보기로 했다.

우선 jsp 는 동적인 웹 페이지 생성이 목적으로, java 언어를 기반으로 필요할 경우 html 에 자바 언어를 혼용하여 사용할 수 있다. jsp 는 웹 페이지가 사용자와 상호작용하며 콘텐츠가 실시간으로 변경되는 웹 페이지를 말하고, 이러한 웹 페이지는 사용자의 입력, 현재 시간, 외부 데이터 등에 따라 내용이 바뀌거나 변경된다.

그러나 RESTful API 는 서버가 직접 코드를 만들고, 이를 순수한 문자열로 전달해 웹 페이지에서 정적인 웹 페이지 생성을 목적으로 하는 것이다.

그러므로 우리 프로젝트에서는 jsp 가 서버 측에서 동적인 웹 페이지를 생성하고, 필요한 경우 RESTful API 를 호출하여 데이터를 가져온 후, 해당 웹 페이지에 통합하게 된다. jsp 는 HTML 코드와 java 코드를 혼합하여 사용하므로, 동적인 콘테츠를 생성하고 클라이언트에게 제공할 수 있다.

흐름을 작성해 보자면,

  1. 사용자가 웹 페이지를 요청하면 JSP가 서버 측에서 실행된다.
  2. JSP는 필요한 데이터를 얻기 위해 RESTful API를 호출한다.
  3. JSP가 동적인 HTML을 생성하고, 이를 클라이언트에게 응답으로 제공한다.
  4. 클라이언트는 받은 HTML을 브라우저에 렌더링하여 사용자에게 동적인 웹 페이지를 표시한다.

이렇게... 조금 비효율적인 방식이 포함되어 있지만 이렇게 가기로 결정했다.

profile
자바 백엔드 개발자 개인 위키

0개의 댓글