REST (Representational State Transfer)

기술노트
Admin (토론 | 기여)님의 2025년 8월 10일 (일) 14:44 판 (IT 용어 자동 업로드: REST (Representational State Transfer))
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

REST (Representational State Transfer)

비유로 쉽게 이해하기

REST는 **'세상의 모든 정보를 각각의 고유 주소를 가진 문서로 보는 관점'**과 같습니다. 예를 들어, '알렉이라는 사용자의 정보'는 `www.technote.wiki/users/alec`이라는 주소를 갖고, '2024년 8월의 게시글 목록'은 `www.technote.wiki/articles/2024/08`이라는 주소를 갖습니다. 우리는 이 주소(URI)를 통해 정보를 조회(GET)하거나, 새로운 정보를 등록(POST)하는 등 정해진 HTTP 동사로 정보를 다룹니다.

개요

Representational State Transfer (REST)는 웹 서비스를 설계하고 개발하기 위한 하나의 소프트웨어 아키텍처 스타일 또는 '설계 철학'입니다. 웹의 기존 기술과 HTTP 프로토콜의 장점을 최대한 활용하여, 네트워크 상에서 자원(Resource)을 정의하고 다루는 방법을 제시합니다.

상세 설명

REST의 핵심은 자원(Resource)행위(Verb), 그리고 표현(Representation)으로 구성됩니다.

  • 자원(Resource): URI(Uniform Resource Identifier)로 식별되는 모든 정보. 예를 들어, 문서, 이미지, 사용자 정보 등이 모두 자원입니다.
  • 행위(Verb): HTTP의 메서드(GET, POST, PUT, DELETE 등)를 사용하여 자원에 대한 행위를 표현합니다.
  • 표현(Representation): 자원은 JSON, XML, TEXT 등 다양한 형태로 표현될 수 있습니다. 클라이언트와 서버는 서로 이해할 수 있는 형태로 자원을 주고받습니다.

이러한 원칙을 따르는 시스템을 'RESTful'하다고 부릅니다. REST는 특정 기술이 아니라 아키텍처 원칙이므로, 이 원칙들을 잘 지켜 시스템을 설계하는 것이 중요합니다.

왜 중요할까요?

  • 단순함과 명확성: URI는 자원을, HTTP 메서드는 행위를 나타내므로 API의 기능과 의도를 쉽게 파악할 수 있습니다.
  • 웹 기술의 재활용: 이미 검증된 HTTP 프로토콜을 그대로 사용하므로, 별도의 통신 기술을 배울 필요 없이 웹의 인프라를 최대한 활용할 수 있습니다.
  • 무상태성(Stateless): 각 요청이 독립적이므로, 서버의 부하를 줄이고 시스템을 쉽게 확장할 수 있습니다.

주요 특징

  • 클라이언트-서버 구조: 클라이언트와 서버의 역할이 명확히 분리되어 서로 독립적으로 발전할 수 있습니다.
  • 무상태성(Stateless): 서버는 클라이언트의 상태를 저장하지 않습니다. 모든 요청은 필요한 모든 정보를 담고 있어야 합니다.
  • 캐시 가능(Cacheable): HTTP의 캐싱 기능을 그대로 사용하여, 반복적인 요청에 대한 응답 속도를 향상시킬 수 있습니다.
  • 통일된 인터페이스(Uniform Interface): URI로 자원을 식별하고 HTTP 메서드로 자원을 조작하는 등, 일관된 규칙으로 시스템 전체를 설계합니다.

사용 사례

  • 대부분의 최신 웹 API 설계 (예: 구글, 페이스북, 네이버의 오픈 API)
  • 마이크로서비스 아키텍처의 서비스 간 통신
  • 모바일 애플리케이션의 백엔드 서버 통신
  • 사물 인터넷(IoT) 디바이스와 서버 간의 데이터 교환

관련 서비스/용어

참고 자료