REST
REST는 자원(resource)을 정의하고 자원에 대한 상태 전이를 통해 상호 작용하는 아키텍처 스타일입니다.
특징
- 자원은 고유한 식별자인 URI(Uniform Resource Identifier)로 표현됩니다.
- 자원에 대한 행위는 HTTP 메서드(GET, POST, PUT, DELETE)로 정의됩니다.
- 상태 전이(State Transfer)는 클라이언트와 서버 간의 통신을 의미하며, 각 요청에는 필요한 정보가 포함되어야 합니다.
RESTful
RESTful은 REST원칙을 따르는 시스템이나 서비스를 의미합니다.
목표
- RESTful은 REST 아키텍처를 따르면서 효율적이고 일관된 인터페이스를 제공하는 것이 목표입니다.
- RESTful 시스템은 자원 식별, 상태 전이, 자원에 대한 일관된 행위 등을 중심으로 설계되어야 합니다.
즉, RESTful은 REST 아키텍처 스타일을 적용한 것으로 RESTful 시스템은 REST 원칙을 따르면서 효율적이고 일관된 인터페이스를 제공합니다.
REST API
RESTful 원칙을 완벽하게 따르지 않을 수 있습니다.
특징
- REST의 기본 원칙에만 부분적으로 따르고 있는 API를 일컫습니다.
- HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 자원에 대한 행위를 정의합니다.
- URI(Uniform Resource Identifier)로 자원을 표현하며, 상태 전이(State Transfer)를 통해 통신합니다.
RESTful API
REST 아키텍처 원칙을 완벽하게 따르는 API를 의미합니다.
목표
- REST의 원칙을 완벽하게 따르면서 효율적이고 일관된 API 인터페이스를 제공하는 것이 목표입니다.
- 자원 식별, 상태 전이, 자원에 대한 일관된 행위 등을 중심으로 설계되어야 합니다.
REST API와 RESTful API 차이점
RESTful API는 REST API의 확장이며, 보다 엄격한 규칙을 따릅니다.
REST API는 RESTful API의 일부 기능만을 적용할 수 있지만, RESTful API는 REST의 원칙을 완벽히 따르도록 노력합니다.
RESTful API 장단점
장점
- 간단하고 일관된 인터페이스
RESTful API는 간단하고 직관적인 디자인을 가지며, 일관된 인터페이스를 제공합니다.
이로 인해 사용자가 API를 쉽게 이해하고 사용할 수 있습니다. - 자원 중심적 설계
RESTful API는 자원을 중심으로 설계되어 있어 자원을 정의하고, 자원에 대한 행위를 정의함으로써 직관적인 API를 제공합니다. - HTTP 표준 사용
RESTful API는 HTTP 표준을 따르므로 기존의 HTTP 인프라를 재사용할 수 있습니다.
이로 인해 클라이언트와 서버 간의 상호 운용성이 향상됩니다. - 유연성과 확장성
RESTful API는 각 자원에 대한 URI를 통해 쉽게 접근할 수 있고, 필요한 경우 새로운 자원을 추가하거나 기존 자원을 업데이트하여 확장이 용이합니다. - 상태를 저장하지 않음
RESTful API는 상태를 저장하지 않으므로 서버 측에서 클라이언트의 상태를 신경 쓰지 않아도 됩니다.
이는 서버의 확장성을 높이고, 상태를 고려하지 않아도 되므로 간편한 클라이언트가 구현이 가능합니다.
단점
- 성능 문제
RESTful API는 상태를 저장하지 않기 때문에 모든 정보를 요청할 때마다 전송해야 합니다.
이는 대용량 데이터 전송 시에 성능 문제를 발생시킬 수 있습니다. - 네트워크 부하
RESTful API는 HTTP를 기반으로 하기 때문에, HTTP의 단점 중 하나인 네트워크 부하가 발생할 수 있습니다.
특히, 요청과 응답에 헤더 정보가 포함되어 전송되기 때문입니다. - 보안 문제
RESTful API는 보안을 위해 추가적인 레이어를 제공하지 않습니다.
SSL을 사용하여 통신을 암호화하는 등의 조치를 취해야 합니다. - 기능 제한
RESTful API는 특정한 동작을 수행하기 위해 자체 메서드를 가지지 않으며, 기본적으로 제공되는 HTTP메서드만 사용할 수 있습니다.
이로 인해 특정한 동작을 위해서는 여러 번의 요청이 필요할 수 있습니다. - 표준이 없음
RESTful API의 디자인 개발자나 조직마다 상이할 수 있습니다.
이로 인해 일관성이 부족할 수 있습니다.
평소 API 설계 시 자주 등장하는 REST, RESTful, REST API, RESTful API의 개념을 다시 정리해 보았습니다.
이를 통해 각 개념의 핵심 특징을 이해하고, 프로젝트에서 적절한 디자인을 선택하는 데 도움이 되었으면 좋겠습니다.
'개발끄적' 카테고리의 다른 글
쿠키(Cookie)와 세션(Session) (0) | 2024.11.03 |
---|---|
Header Referer를 아시나요? (0) | 2024.07.30 |
계층형 아키텍처와 도메인형 아키텍처: 패키지 구조의 비교 (0) | 2024.06.24 |
HTTP Method (GET, POST, PUT, DELETE, ...) (0) | 2024.01.19 |
VO DTO Entity 개념과 차이점 (0) | 2023.11.11 |