REST와 RESTful API

이정빈·2024년 4월 30일

네트워크

목록 보기
9/10
post-thumbnail

REST

REST란 Representational State Transfer의 약자로 웹의 장점을 최대한 활용할 수 있는 Client와 Server 간 통신 방식 중 하나이다.
설계 기본 규칙으로 HTTP URI를 통해 자원을 명시하고 HTTP method(GET, POST, PUT, DELETE)를 통해 자원을 처리하도록 설계된 아키텍처이다. REST는 아래의 핵심 요소들을 포함한다.

1. 자원 (Resources):

  • REST는 자원을 중심으로 설계된다. 모든 자원은 고유한 식별자(일반적으로 URL)를 가지며, 이를 통해 클라이언트가 자원을 식별하고 접근할 수 있다.
  • 예를 들어, 웹 상에서 블로그 게시물은 각각의 고유한 URL을 가지고 있으며, 이를 통해 해당 게시물에 접근할 수 있다.

2. 표현 (Representation):

  • 자원의 상태는 하나 이상의 표현을 통해 전송된다. 일반적으로 표현은 JSON 또는 XML 형식으로 이루어지며, 클라이언트가 이해할 수 있는 형태로 표현된다.
  • 클라이언트는 서버로부터 받은 자원의 표현을 해석하여 사용한다.

3. 상태 전송 (State Transfer):

  • 클라이언트가 서버에 요청을 보내면, 그에 따라 자원의 상태가 전송된다. 이는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 이루어진다.
  • 예를 들어, GET 요청은 자원의 상태를 가져오는 데 사용되고, POST 요청은 새로운 자원을 생성하는 데 사용된다.

정리하자면 REST는 자원을 HTTP URI로 표현하고 HTTP Method(GET, POST, PUT, DELETE 등)를 통해 자원의 상태(HTTP Status Code)를 주고 받는 아키텍쳐라고 할 수 있다.

URI와 URI에 대한 설명은 이 포스팅에 작성했다.

REST의 장단점

장점

1. 간단함과 유연성: REST는 HTTP 프로토콜을 기반으로 하며, 자원 중심적이고 간단한 아키텍처 스타일을 가지고 있어 구현이 쉽고 유연하다.

2. 무상태(Stateless) 특성: REST는 서버가 클라이언트의 상태를 유지할 필요가 없으므로 확장성이 뛰어나고, 서버 부하를 줄일 수 있다.

3. 플랫폼 독립성: REST는 플랫폼과 언어에 독립적이며, 다양한 클라이언트와 서버 간의 통신이 용이하다.

4. 캐싱 지원: HTTP 프로토콜의 캐싱 기능을 활용하여 서버의 응답을 캐싱하여 성능을 향상시킬 수 있다.

5. 명확한 계층 구조: REST는 자원을 계층적으로 구성하고, 각 자원에 대한 URL을 제공하여 클라이언트와 서버 간의 통신을 단순화한다.

단점

1. 표준의 부재: REST의 특성을 해석하는 방식에 대한 표준이 명확하게 정의되어 있지 않아, 개발자 간에 구현이 다를 수 있다.

2. 상태 관리의 어려움: REST는 기본적으로 상태를 관리하지 않기 때문에, 상태를 관리해야 하는 경우 추가적인 구현이 필요할 수 있다.


RESTful API(REST API)

RESTful API는 REST 아키텍처 스타일을 따르는 API를 말한다.(REST API가 REST 아키텍쳐 스타일을 따르는 API인데 이를 RESTful하다고 하므로 REST API와 RESTful API는 같은 의미라고 보면 된다.) 이는 클라이언트와 서버 간의 통신을 위해 HTTP 프로토콜을 사용하고, 자원을 중심으로 설계된 API를 의미한다.

RESTful API의 특징은 아래와 같다(REST의 특징과 같다).

1. 자원 중심적(Resource-centric): RESTful API는 자원(또는 리소스)을 중심으로 설계된다. 각 자원은 고유한 식별자(일반적으로 URL)를 가지고 있고, 클라이언트는 이를 통해 자원에 접근한다.

2. HTTP 메서드 활용: HTTP 프로토콜의 다양한 메서드(GET, POST, PUT, DELETE 등)를 활용하여 자원에 대한 행위를 나타낸다. 예를 들어, GET은 자원의 조회, POST는 자원의 생성, PUT은 자원의 업데이트, DELETE는 자원의 삭제를 나타낸다.

3. 표현의 분리: 자원의 상태는 하나 이상의 표현(JSON, XML 등)을 통해 전송된다. 클라이언트는 이러한 표현을 해석하여 자원의 상태를 이해하고 사용한다.

4. 무상태(Stateless) 특성: RESTful API는 서버가 클라이언트의 상태를 유지하지 않으므로 서버의 확장성이 뛰어나고, 클라이언트와 서버 간의 독립성이 유지된다.

5. 캐싱 지원: HTTP 프로토콜의 캐싱 기능을 활용하여 성능을 향상시킬 수 있다.

6. 명확한 계층 구조: RESTful API는 자원을 계층적으로 구성하고, 각 자원에 대한 URL을 제공하여 클라이언트와 서버 간의 통신을 단순화한다.

참고:

profile
사용자의 입장에서 생각하며 문제를 해결하는 백엔드 개발자입니다✍

0개의 댓글