CS

#3. REST API

nacjji 2023. 2. 21. 13:50
반응형
REST API란?

웹 서비스에서 자원을 다루기 위한 아키텍처 스타일, REST API 는 서버 간의 통신을 위한 규칙을 제공한다. HTTP 프로토콜을 기반으로 하고, 자원의 식별자(URI)와 자원에 대한 행위(HTTP 메서드 GET, POST, PUT, DELETE)로 이루어져 있다. 

REST API의 특징
  • Stateless : 상태를 유지하지 않는다.서버의 부담을 줄이고 확장성을 높이기 위해 클라이언트는 요청에 필요한 모든 정보를 제공해야 한다.
  • Uniform Interface : 자원의 식별자와 자원에 대한 행위를 사용하여 일관된 인터페이스를 제공한다. 이를 통해 클라이언트 간에 인터페이스가 단순해진다.
  • Cachable : 캐싱을 지원한다. 클라이언트는 캐시를 사용해 서버로부터 자원을 다시 요청하지 않고 로컬에서 저장된 자원을 다시 사용해 요청에 대한 시간을 절약할 수 있다. 
  • Self-descriptive message : 메시지 자체에 자원에 대한 정보를 포함시킨다. 이를 통해 클라이언트와 서버 간의 상호작용이 단순해지고 서로 독립적으로 변경될 수 있다.
  • Client-server architecture: 클라이언트와 서버 간의 역할을 분리하여 서로 독립적으로 진화할 수 있도록 한다.

 

REST API 를 사용하는 이유
  • 클라이언트와 서버 간의 독립성: REST API는 클라이언트와 서버 간의 인터페이스를 일관성 있게 유지하고, 서로 독립적으로 진화할 수 있도록 한다. 이를 통해 서버 측과 클라이언트 측에서 각자의 역할과 책임을 분리하여 개발할 수 있다.
  • 다양한 클라이언트와의 상호 운용성: REST API는 HTTP 프로토콜을 기반으로 하므로, 다양한 클라이언트(웹 브라우저, 모바일 앱 등)와 상호 운용이 가능하다. 이를 통해 서버 측에서는 다양한 클라이언트를 지원할 수 있고, 클라이언트 측에서는 필요한 기능을 쉽게 이용할 수 있다.
  • 캐싱 기능 지원: REST API는 캐싱을 지원하므로, 클라이언트는 이전에 요청한 결과를 캐시에 저장하여 다시 요청하지 않고 사용할 수 있습니다. 이를 통해 서버의 부하를 줄이고, 빠른 응답을 제공할 수 있습니다.
  • 비즈니스 로직과 데이터베이스 스키마 분리: REST API는 클라이언트와 서버 간의 인터페이스를 정의하기 때문에, 비즈니스 로직과 데이터베이스 스키마를 분리할 수 있습니다. 이를 통해 서버 개발자와 데이터베이스 개발자가 각자의 분야에서 개발을 수행할 수 있습니다.
  • 확장성과 유연성: REST API는 HTTP 프로토콜을 기반으로 하며, 자원의 식별자와 HTTP 메소드로 이루어져 있기 때문에, 쉽게 확장이 가능하며, 유연하게 변화에 대응할 수 있습니다.

 

REST API 외 디자인 패턴

SOAP(Simple Object Access Protocol) : XML 기반 메시지 교환 프로토콜, WSDL(Web Services Description Language)을 사용해 API 인터페이스를 설명하고, XML기반의 요청과 응답 메시지를 사용한다. SOAP는  보안, 트랜잭션 처리, 오류 처리 등의 고급 기능을 제공하지만 일반적으로 REST API 보다 복잡하고 무거운 프로토콜이다. 

 

GraphQL(Graph Query Language) : REST API 와 달리 클라이언트가 필요한 데이터만 요청할 수 있도록 하는 쿼리 언어이다. 하나의 엔드포인트에서 일정한 데이터를 반환하는 REST API 와 달리, GraphQL은 여러 개의 엔드포인트에서 원하는 데이터를 선택적으로 반환할 수 있다. 이를 통해 불필요한 데이터 전송을 줄일 수 있어 대용량 데이터 처리에 효율적이다. GraphQL은 REST API 와 달리 캐싱, 보안 등의 이슈를 직접 처리해야한다.