REST API와 원칙

개발자·2022년 5월 31일
0
post-custom-banner

REST란?

REST는 REpresentational State Transfer의 약자로 분산형 하이퍼미디어 시스템의 아키텍처 스타일이다.
REST API는 REST 아키텍처 스타일을 따르는 웹 API(또는 웹 서비스)이다.

REST API는 다음 6가지 원칙을 따라야 한다.

REST API의 6가지 원칙

1. 균일한 인터페이스

사용자에게 노출되고 시스템 내부에서 따를 자원에 대한 API 인터페이스를 결정해야 한다. 균일한 인터페이스를 통해 전반적인 시스템 아키텍처를 단순화하고 가독성을 높일 수 있다. 시스템 전체의 리소스 표현은 명명 규칙, 데이터 형식과 같은 특정 지침을 따라야 하며 모든 리소스는 메서드를 통해 유사한 방식으로 사용되어야 한다. 즉, 개발자가 하나의 API에 익숙해지면 다른 API에 대해서도 유사한 방식을 따를 수 있어야 한다.

균일한 인터페이스를 작성하기 위해 다음 조건을 따라야 한다.

  • Identification of resources : 인터페이스는 클라이언트와 서버 간의 상호 작용에 관련된 각 리소스를 고유하게 식별해야 한다.
  • Manipulation of resources through representations : 서버 응답에 있어 리소스의 표현이 균일해야 한다.
  • Self-descriptive messages : 각 리소스의 Representation은 메시지 처리 방법에 대한 정보가 포함되어 있어야 한다. 또한 클라이언트가 리소스에 대해 수행할 수 있는 추가 작업에 대한 정보를 제공해야 한다.
  • Hypermedia as the engine of application state : 클라이언트는 애플리케이션의 초기 URI만 가지고 있어야 한다. 하이퍼링크를 사용해 다른 모든 리소스와 상호 작용을 동적으로 구동해야 한다.

2. Client - Server

클라이언트와 서버가 서로 종속되지 않고 개별적으로 발전할 수 있어야 한다는 것을 의미한다. 클라이언트와 서버를 분리하여 여러 플랫폼에 걸친 사용자 인터페이스의 이식성을 개선하고 서버 구성 요소를 단순화하여 확장성을 향상시킨다. 클라이언트는 리소스의 URI만 알고 있어야 한다. 서버와 클라이언트는 인터페이스가 변경되지 않는 한 독립적으로 교체 및 개발될 수 있다.

3. Stateless

서버는 클라이언트가 수행한 최신 HTTP 요청에 대해 아무것도 저장하지 않는다. 즉, Stateless는 클라이언트에서 서버로 전송되는 각 요청에는 요청을 처리하는데 필요한 모든 정보가 포함되어 있어야 한다는 것을 의미한다.
서버는 이전에 저장된 컨텍스트 정보를 이용할 수 없다. 그러므로 클라이언트는 세션이나 쿠키로 상태를 관리해야 한다. ex) 로그인 인증

4. 캐시

REST에서 캐시는 해당되는 경우 리소스에 적용되어야 하며, 캐시가 가능하다고 선언해야 한다. 캐시가 가능한 경우 클라이언트는 동일한 요청에 대해 특정 기간동안 응답 데이터를 재사용할 수 있다. 캐시 사용은 클라이언트의 성능 향상과 서버 확장성을 가져온다.

5. Layered System

계층화된 시스템은 구성요소의 동작을 제한함으로써 아키텍처를 계층적으로 구성할 수 있도록 한다. 예를 들면 REST를 통해 계층화된 시스템 아키텍처를 사용하면 서버 A에 API를 배포하고 서버 B에 데이터를 저장하고 서버 C에 요청을 인증할 수 있다.
각 계층은 상호작용하는 계층 너머를 볼 수 없다.

6. Code on Demand (선택 사항)

대부분 리소스의 정적 표현을 XML이나 JSON 형식으로 보내지만 필요한 경우 응용 프로그램의 일부를 지원하기 위해 실행 코드를 반환할 수 있다. REST는 코드를 실행하거나 다운로드함으로써 클라이언트 기능을 확장할 수 있도록 한다. 다운로드된 코드는 사전 구현에 필요한 기능의 수를 줄임으로써 클라이언트를 단순화한다. 서버는 코드 형태로 클라이언트에 전달되는 기능의 일부를 제공할 수 있으며 클라이언트는 코드를 실행하기만 하면 된다.


Resource란?

REST의 핵심은 자원이다. 우리가 명명할 수 있는 모든 정보는 자원이 될 수 있다.
특정 시점의 리소스 상태를 리소스 표현이라고 한다.
리소스 표현은 다음과 같이 구성된다.

  • 데이터
  • 메타데이터
  • 하이퍼미디어 링크

REST API는 상호 연결된 Resource 집합으로 구성된다. 이러한 Resource 집합을 REST API 의 리소스 모델이라고 한다.

Resource Method

리소스 메서드는 어떠한 리소스의 두 상태 간의 원하는 전환을 수행하는데 사용된다.
많은 사람들이 리소스 메서드와 HTTP 메서드를 잘못 연관시킨다. 어떤 조건에서 어떤 메서드를 사용해야 하는지는 없다. 단지 균일한 인터페이스를 사용하면 된다.

HTTP != REST

REST와 HTTP는 같지 않다. REST는 웹을 보다 합리적이고 표준적인 것으로 만들기 위한 것이다.



Ref.

https://restfulapi.net/

profile
log.info("공부 기록 블로9")
post-custom-banner

0개의 댓글