[Web]REST의 특징

Euiyeon Park·2024년 8월 16일

Web

목록 보기
3/13
post-thumbnail

REST API에 대한 포스트에 이어 REST의 특징을 따로 정리하고자 한다.

🌿REST

REpresentational State Transfer,

  • 웹에서 시스템 간의 통신을 효율적으로 하기 위한 아키텍처 스타일

  • 자원(Resource)URI로 명시하고, HTTP Method를 통해 자원을 처리

  • REST의 핵심 개념은 시스템 간의 상호작용을 간단하고 일관성있게 설계하는 것

🌿REST의 특징

REST의 가장 큰 특징은 HTTP 기존 웹 표준을 그대로 사용하므로,
웹에서 사용하는 기존 인프라를 그대로 활용 가능하다는 점이다.

💬 1. Client - Server

REST 아키텍처에서는 클라이언트(Client)서버(Server)가 명확히 분리
클라이언트는 서버에 자원을 요청하고, 서버해당 자원에 대해 응답한다.

💬 2. Stateless

REST는 Stateless(무상태) Protocol을 따른다.
서버는 클라이언트의 각 요청이 독립적이며, 요청 간의 클라이언트에 대한 상태를 저장하지 않는다.
즉, 작업을 위한 상태 정보를 따로 저장하고 관리하지 않음

  • 각 요청은 완전한 정보를 포함해야 하며, 서버는 이전 요청에 대한 정보를 기억하지 않는다.

  • 모든 요청은 필요한 정보를 자체적으로 포함하고 있어야하며 따라서 클라이언트의 요청은 항상 동일한 방식으로 처리될 수 있고, 특정 서버에 의존하지 않는다.

  • 서버의 복잡성이 줄어들고, 확장성(Scale Out) 향상 및 성능 개선

💬 3. Cacheable

REST에서 응답캐시 가능해야 한다.
클라이언트나 중간 시스템은 서버의 응답을 캐시할 수 있어야 하며, 이를 통해 성능을 최적화할 수 있음.

  • HTTP가 가진 캐싱 기능을 통해 서버의 부담을 줄이고 클라이언트의 응답시간을 단축할 수 있다.

  • HTTP 프로토콜 표준에서 사용하는 Last-Modified Tag 또는 E-Tag를 이용해 캐싱을 구현한다.

  • 적절한 캐싱 정책을 사용하면 성능이 크게 향상된다.

💬 4. Layered System

REST 시스템은 계층화된 아키텍처로 설계될 수 있다.
클라이언트와 서버 간 통신에서 중간 계층이 존재할 수 있으며,
이 중간 계층은 로드 밸런싱, 보안 정책 적용, 캐시 등의 역할을 할 수 있다.

  • 클라이언트는 REST API Server만 호출한다.

  • 클라이언트는 자신이 서버와 직접 통신하는지, 중간 계층을 거치는지 알 필요가 없다.

  • REST Server는 다중 계층으로 구성될 수 있다.

  • Gateway, Proxy server, Load balancer 등이 중간 계층이 위치할 수 있다.

  • 시스템의 확장성과 보안성이 높아진다.

💬 5. Uniform Interface

REST의 중요한 특징 중 하나는 모든 리소스에 대해 일관된 인터페이스를 제공하는 것이다.
리소스와의 상호작용은 HTTP 메서드(GET, POST, PUT, DELETE)를 통해 이루어진다.

  • REST API는 일정한 규칙에 따라 자원을 처리하고, 그 규칙이 모든 리소스에 대해 동일하게 작용한다.

  • REST는 일관된 규칙에 따라 리소스를 다루기 위해 HTTP 메소드를 사용한다.

    • 이를 통해 리소스를 어떻게 요청하고 처리할지 일관성 있게 결정한다.
  • 이로 인해 API 사용법이 예측 가능하고 간결하며 이해하기 쉬운 구조를 제공한다.

💬 6. Self-Descripitiveness

REST의 리소스와 그와 관련된 요청 및 응답 메세지는 자체 설명성을 가져야 한다.
충분한 정보를 포함하여, 별도의 설명이 없어도 클라이언트가 해당 리소스를 이해하고 상호작용할 수 있도록 해야한다.

  • REST API의 요청과 응답이 스스로를 설명할 수 있는 구조를 가진다.

  • 메세지 자체만으로도 의미를 해석할 수 있어야 한다.

ref

https://easyhomputer.tistory.com/38

profile
"개발자는 해결사이자 발견자이다✨" - Michael C. Feathers

0개의 댓글