백엔드

[Spring] RESTful 이란?

do_hyuk 2023. 11. 6. 18:01

RESTful Web Service를 구현해보기 전에 RESTful 에 대해서 알아보자.

 

1. RESTful Api 를 사용하는 이유

앱에서 사용되는 대량의 데이터는 파일을 따로 구성하여 앱 내부에 넣어두고, 이 파일을 읽는 방식으로 처리된다. 콘텐츠 서비스 앱의 핵심요소는 최신 데이터이다. 하지만 데이터를 파일에 저장하는 방식으로 처리하게 되면 새로운 데이터를 추가할 때 마다 사용자가 앱 업데이트를 해야하고, 그럴수록 사용자 경험은 점점 나빠질 것이다.

따라서 데이터를 서버에 두고, 서버로부터 다운받아 사용한다면 이를 해결 할 수 있다. 서버에 새로운 데이터를 업로드하고, 앱은 이 서버로부터 데이터를 받아내면 사용자는 앱에 대한 업데이트 없이 최신 데이터를 받을 수 있는 것이다.

 

2. 비연결성 지향 통신

모바일 통신에서 많이 사용되는 방식은 비연결성 지향 통신(HTTP / HTTPs 프로토콜)이다. 요청을 받으면, 맞는 응답을 보낸 후에 바로 연결을 종료한다.

 

3. 웹 서비스(Web Service)

일반적으로 웹사이트는 HTML 파일을 랜더링하여 여러가지 UI를 브라우저에 띄운다. 웹 서비스는 HTTP/HTTPs 프로토콜을 사용하여 데이터만을 주고 받을 수 있도록 설계된 모듈을 말한다.

이러한 웹 서비스는 아키텍쳐에 따라 두 가지 방식으로 나뉜다.

  • RESTful(Representational State Transfer)
  • SOAP(Simple Object Access Protocol)

데이터 타입도 두 가지가 있다.

  • XML
  • JSON

RESTful 에서는  주로 JSON과 함께 쓰이고, SOAP에서는 XML이 사용된다.

 

4. RESTful

REST는 실질적인 네트워크 프로토콜은 아니고, 네트워크 자원을 정의하고 자원에 대한 주소 관리 방법이다. 웹 형식으로 데이터를 전송하지만, 쿠키, SOAP 등의 전송 프로토콜 없이 전송이 가능하도록 만들기 위한 간단한 형식의 인터페이스를 말한다.

일반적으로 서버에게 요청하려는 정보를 URI를 통해 나타낸다. URI는 슬래시를 통해 단위를 구분한다. 

 

5. RESTful Api 에서 HTTP 메서드의 종류

  • GET : 특정 리소스의 대표적인 정보를 요청할 때
  • POST : ID 없이 리소스를 생성 / 수정
  • PUT : ID 기반으로 리소스 생성 / 수정
  • DELETE : 리소스 삭제
  • HEAD : GET 방식 요청이지만 내용 없이 메타 정보 요청
  • OPTION : 특정 URL에 대한 보조 메소드 역할

6. REST의 특징

  • 웹의 모든 리소스(문서, 그림, 데이터)는 URI로 표현하고 접근 가능하다. -> Addressability
  • 모든 리소스는 구조적이며, 유기적인 연결이 가능하다. -> Connectedness
  • 비상태 지향적인 방법을 따른다. -> Statelessness
  • 정해진 메서드(HTTP Method)만을 사용해 리소스를 사용하는 아키텍쳐이다. -> Homegeneous interface