24-05-27 TIL (REST API 이해하기전 REST란 무엇인가?)
REST API
REST API란 *REST를 기반*으로 만들어진 API를 의미한다. REST API를 알기 위해 API와 REST부터 알아보도록 하겠습니다.
** 자원(Resource) : HTTP URI
REST란 무엇인가?
REST(Representational State Transfer)의 약자
1. 요청된 주소만 보고도 어떤 내용에 관한 요청인지 예상할 수 있게 하는 형식을 말한다.
2. **자원(Resource) 을 URI 로 표현하고, HTTP 메서드(GET, POST, DELETE, PUT, PATCH) 를 사용해서 해당 자원의 CRUD(CREATE, READ, UPDATE, DELETE) 을 적용하는 것을 의미한다.
3. 네트워크상에서 Client 와 Server 사이의 통신하는 방식 중 하나이다.
REST 구성요소
1.자원 : HTTP URI
2.행위(자원에 대한 행위) : HTTP 요청 메서드 (GET, PUT, DELETE, POST, PATCH)
3.표현(자원에 대한 행위의내용) : 행위에 대한 구체적 내용
REST 특징
- Server-Client(서버-클라이언트 구조)
ㄴ > 서버와 클라이언트는 서로 독립적으로 동작하며, 각자의 역할이 명확하게 분리됩니다.
- 이 구조는 클라이언트와 서버의 독립적인 개발과 배포를 가능하게 합니다.
- 서버 : 데이터 저장 및 처리 로직을 담당하며, 클라이언트 요청에 따라 자원을 제공하거나 수정합니다.
- Stateless(무상태)
ㄴ> RESTful 서비스는 무상태성을 유지합니다. 서버는 각 요청을 독립적으로 처리하며, 이전 요청에 대한 정보를 저장하지 않습니다.
- 각 요청은 필요한 모든 정보를 포함해야 하며, 서버는 이 요청을 독립적으로 처리합니다.
- 이는 서버의 확장성을 높이며, 클라이언트의 상태를 서버가 관리하지 않기 때문에 클라이언트와 서버 간의 상호작용을 단순화합니다.
- Cacheable(캐시 처리 가능)
HTTP 응답은 캐시 가능해야 합니다. 클라이언트는 응답을 캐싱하여 동일한 요청에 대해 서버의 부담을 줄이고 응답 시간을 단축할 수 있습니다.
- 캐시 제어 메커니즘(예: HTTP 헤더를 통해)을 사용하여 클라이언트가 응답을 캐시할 수 있는지, 얼마나 오랫동안 캐시할 수 있는지를 지정할 수 있습니다.
- 이는 네트워크 효율성을 향상시키고, 서버의 부하를 줄이며, 사용자 경험을 개선합니다.
- Layered System(계층화)
RESTful 아키텍처는 계층화된 시스템으로 설계됩니다. 클라이언트는 중간 계층이 서버와의 상호작용을 처리할 수 있음을 인식하지 못합니다.
- 계층화는 보안, 로드 밸런싱, 캐싱 등의 추가 기능을 제공하는 데 도움이 됩니다.
- 클라이언트는 중간 서버(프록시, 게이트웨이 등)를 통해 서버와 상호작용할 수 있으며, 이는 시스템의 확장성과 보안을 향상시킵니다.
- Uniform Interface(인터페이스 일관성)
일관된 인터페이스를 사용하여 클라이언트와 서버 간의 상호작용을 단순화합니다. 일관된 인터페이스는 다음과 같은 제약 조건을 포함합니다:
- 자원 식별: 모든 자원은 URI로 고유하게 식별됩니다.
- 자원의 표현: 자원은 다양한 형태로 표현될 수 있으며, 일반적으로 JSON이나 XML 형식을 사용합니다.
- 표현을 통한 자원의 조작: 클라이언트는 자원의 상태를 변경할 수 있는 표현을 전송합니다.
- 자원 간의 관계: 하이퍼미디어 링크를 통해 자원 간의 관계를 표현합니다.
- 이로 인해 클라이언트와 서버의 상호작용이 표준화되고 예측 가능하게 됩니다.
REST의 장점
- 확장성 (Scalability)
- 서버와 클라이언트가 독립적으로 개발 및 확장될 수 있습니다.
- 서버는 다수의 클라이언트 요청을 처리할 수 있도록 쉽게 확장 가능합니다.
- 유연성 (Flexibility)
- 다양한 데이터 형식을 지원하며, 클라이언트는 필요한 형식(JSON, XML 등)으로 데이터를 요청할 수 있습니다.
- URL 구조와 HTTP 메서드를 사용해 자원에 대한 CRUD 작업을 간단하고 직관적으로 수행할 수 있습니다.
- 유지보수성 (Maintainability)
- 일관된 인터페이스 덕분에 API가 단순하고 명확하여 유지보수가 용이합니다.
- 자원 경로와 메서드가 명확히 정의되어 있어 API 사용이 직관적입니다.
- 성능 향상 (Performance Improvement)
- HTTP 프로토콜을 활용해 캐싱을 효과적으로 사용할 수 있어 성능이 향상됩니다.
- 캐시된 응답을 사용함으로써 서버 부하를 줄이고 응답 시간을 단축할 수 있습니다.
- 보안 (Security)
- 표준 HTTP 보안 메커니즘(예: TLS/SSL)을 쉽게 통합할 수 있습니다.
REST의 단점
- 복잡한 트랜잭션 처리 (Complex Transactions)
- REST는 상태를 유지하지 않기 때문에, 복잡한 트랜잭션이나 연속적인 작업 처리가 어려울 수 있습니다.
- 각 요청이 독립적이어서, 관련된 여러 요청 간의 상태를 관리하기 어렵습니다.
- 과도한 데이터 전송 (Overhead)
- JSON이나 XML 형식으로 데이터를 전송하는 경우, 필요한 데이터보다 더 많은 데이터를 전송하게 되어 오버헤드가 발생할 수 있습니다.
- 특히, 대량의 데이터나 빈번한 요청이 필요한 경우 성능 저하가 발생할 수 있습니다.
- 표준의 제한 (Standard Limitations)
- REST는 설계 원칙일 뿐, 구현에 대한 명확한 표준이 없어서 각기 다른 방식으로 구현될 수 있습니다.
- API 설계자의 재량에 따라 API의 일관성과 품질이 달라질 수 있습니다.
- 실시간 통신의 비효율성 (Inefficiency for Real-time Communication)
- REST는 주로 요청-응답 모델을 사용하므로, 웹소켓이나 gRPC 같은 실시간 통신에 비해 비효율적일 수 있습니다.
- 실시간 데이터 업데이트가 필요한 애플리케이션에서는 적합하지 않을 수 있습니다.
정리
REST의 기본 원칙을 성실히 지킨 서비스 디자인을 RESTful 라고 표현하며,
REST API 는 REST 스타일(위에 내용) 따르는 API를 의미한다.
REST는 확장성, 유연성, 유지보수성, 성능 향상, 보안 등의 장점을 제공하지만, 복잡한 트랜잭션 처리, 데이터 전송 오버헤드, 표준의 제한, 실시간 통신의 비효율성 등의 단점도 존재합니다. 이러한 장단점을 고려하여 RESTful API를 사용할지, 또는 다른 아키텍처 스타일을 사용할지를 결정하는 것이 중요합니다.
[네트워크] REST API란? REST, RESTful이란?
REST API란 REST를 기반으로 만들어진 API를 의미합니다. REST API를 알기 위해 REST부터 알아보도록 하겠습니다. REST란? REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상
khj93.tistory.com
https://velog.io/@o1011/JavaScript-RESTful-API-%EB%9E%80
[JavaScript] REST API 란?
REST (Representational State Transfer) 는 HTTP 를 기반으로 클라이언트가 서버의 리소스에 접근하는 통신 방식 중 하나입니다.REST 의 기본 원칙을 성실히 지킨 서비스 디자인을 RESTful 이라고 표현합니다.
velog.io