yelimu 2024. 8. 30. 10:47

REpresentational State Transfer의 약자로, HTTP 프로토콜을 기반으로 자원(resource)을 표현하고, 이 자원에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행하는 웹서비스 개발 방식을 말한다. 

얄팍한 코딩사전

 


 

RESTful API는 리소스, 메서드, Representation이라는 세 가지 핵심 개념을 기반으로 동작합니다. 이러한 개념들을 이해하면 RESTful API를 설계하고 사용하는 데 큰 도움이 됩니다.

1. 리소스 (Resource)

  • 정의: RESTful API에서 모든 데이터는 리소스로 취급됩니다. 리소스는 웹 상의 모든 것, 즉 문서, 이미지, 동영상, 데이터베이스 항목 등을 의미합니다.
  • URI로 표현: 각 리소스는 고유한 URI(Uniform Resource Identifier)를 가지며, 이 URI를 통해 리소스를 식별하고 접근합니다. 예를 들어, 사용자 정보는 /users/1과 같은 URI로 표현될 수 있습니다.
  • 계층적 구조: 리소스는 계층적인 구조를 가질 수 있습니다. 예를 들어, /products 아래에 /products/1, /products/2와 같은 하위 리소스를 가질 수 있습니다.

2. 메서드 (Method)

  • 정의: 리소스에 대한 작업을 수행하기 위해 HTTP 메서드를 사용합니다. HTTP 메서드는 리소스에 대한 CRUD(Create, Read, Update, Delete) 작업을 정의합니다.
  • 주요 메서드:
    • GET: 특정 리소스를 조회합니다.
    • POST: 새로운 리소스를 생성합니다.
    • PUT: 기존 리소스를 전체적으로 업데이트합니다.
    • DELETE: 기존 리소스를 삭제합니다.
    • PATCH: 기존 리소스의 일부분만 업데이트합니다.
  • 예시:
    • /users에 POST 요청을 보내 새로운 사용자를 생성합니다.
    • /users/1에 GET 요청을 보내 특정 사용자 정보를 조회합니다.

3. 표현 (Representation)

  • 정의: 리소스의 상태를 클라이언트에게 전달하기 위한 형식입니다. 즉, 리소스를 표현하는 방법입니다.
  • 다양한 형식: JSON, XML, HTML 등 다양한 형식으로 표현될 수 있습니다.
  • Content-Type: HTTP 헤더의 Content-Type 필드를 통해 표현 형식을 지정합니다.
  • 예시:
    • JSON 형식으로 사용자 정보를 반환할 경우, Content-Type은 application/json이 됩니다.

 

RESTful API의 특징

  • 자원 중심: 각각의 데이터는 고유한 URI(Uniform Resource Identifier)를 가진 자원으로 표현합니다. 예를 들어, 사용자 정보는 /users/1과 같은 URI로 표현될 수 있습니다. 즉 URI 는 '어떤 자원에 대한 것인가' 에 대해서만 표현해야 하며 '무엇을 하는가' 는 표현하지 않는다.
  • HTTP 메서드: 자원에 대한 CRUD 작업은 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 수행합니다. 
  • Stateless: 각 요청은 독립적이며, 서버는 이전 요청에 대한 상태를 유지하지 않습니다.
  • Client-Server: 클라이언트와 서버는 분리되어 있으며, 서버는 자원을 관리하고 클라이언트는 자원에 대한 요청을 합니다.
  • Cacheable: 응답 결과를 캐싱하여 시스템 성능을 향상시킬 수 있습니다. (클라이언트 : 이전에 한 요청을 기억 / 서버: 이전에 보낸 응답을 기억) 
  • Uniform Interface: 모든 요청은 동일한 인터페이스를 통해 처리됩니다.

 

RESTful API의 장점

  • 간단하고 직관적: HTTP 프로토콜을 기반으로 하므로 이해하기 쉽고, 다양한 프로그래밍 언어와 플랫폼에서 사용할 수 있습니다.
  • 확장성이 좋음: 새로운 자원을 추가하거나 기존 자원을 수정하기 쉽습니다.
  • 다양한 도구 지원: RESTful API를 개발하고 테스트하기 위한 다양한 도구와 라이브러리가 존재합니다.

RESTful API 설계 시 고려 사항

  • URI 설계: 명확하고 간결한 URI를 설계하여 자원을 쉽게 식별할 수 있도록 합니다.
  • HTTP 메서드 활용: 각 메서드의 의미를 정확하게 이해하고 적절하게 사용합니다.
  • 응답 형식: JSON, XML 등 다양한 형식으로 응답을 제공할 수 있습니다.
  • 에러 처리: 오류 발생 시 적절한 HTTP 상태 코드와 에러 메시지를 반환합니다.
  • 보안: 인증, 권한 부여 등 보안 조치를 취하여 데이터를 안전하게 보호합니다.