1. REST API란?
-
1) REST란?
- REST(Representational State Transfer)는 웹 서비스를 구현하기 위한 아키텍처 스타일 중 하나이다. REST는 200년 로이 필딩(Roy Fielding)의 박사학위 논문에서 처음 제안되었으며, HTTP 프로토콜을 기반으로 한 분산 하이퍼미디어 시스템(Distributed Hypermedia System)을 설계하기 위한 아키텍처 스타일이다.
-
REST API의 장점
- HTTP 프로토콜을 사용하므로 기존 웹 인프라를 사용하여 쉽게 개발할 수 있다.
- 자원을 표현하기 위해 URL을 사용하므로 직관적이며 이해하기 쉽다.
- 서버와 클라이언트 간의 데이터 포맷으로 JSON, XML 등을 사용하기 때문에 다양한 플랫폼에서 호환성이 높다.
- 상태를 유지하지 않으므로 서버의 부하가 줄어들어 확장성이 좋다.
- REST API의 무상태성(Stateless)으로 인해 클라이언트와 서버 간 의존성이 낮아져 더욱 유연하고 쉬운 확장이 가능하다.
-
REST API의 단점
- 설계 규칙을 잘 지키지 않을 경우, API의 일관성과 가독성이 떨어질 수 있다.
- 높은 자유도로 인해 API를 사용하는 클라이언트가 서버의 일부 기능에 대해 지원하지 않는 요청을 보낼 수 있다.
- REST API는 대부분의 경우 HTTP 프로토콜을 사용하므로, 보안상의 이슈를 고려해야 한다. (HTTPS 사용을 통한 보안 강화)
RMM에 따른 REST API 디자인
-
RMM이란?
- RMM(Richardson Maturity Model)은 REST API의 성숙도를 4단계로 나누어 정의한 모델이다. RMM에 따라 REST API를 디자인할 때 고려해야 할 사항이 달라진다.
-
0단계 : HTTP
- HTTP 프로토콜을 이용하여 API를 구현하는 수준
- 리소스에 대한 식별자만 HTTP 메서드와 함께 제공
- 리소스와 메서드가 명확히 구분되지 않음
- 가장 기본적인 수준으로, REST API의 원칙에 대한 이해가 부족한 상태
-
1단계 : Resource
- Resource에 대한 식별자를 명확히 구분하고, HTTP 메서드를 이용하여 리소스에 대한 작업을 수행하는 수준
- 리소스 식별자를 명확히 구분하기 위해 URI를 사용
- HTTP 메서드를 이용하여 CRUD 작업 수행
- 여러 리소스를 한 번에 처리할 수 있는 기능이 없음
- 단순한 데이터 전송에만 적합한 수준
-
2단계 : HTTP 동사(요청 메서드)
- 리소스와 HTTP 메서드가 명확히 구분되고, HTTP 동사를 이용하여 리소스에 대한 작업을 수행하는 수준
- HTTP 동사를 이용하여 다양한 작업을 수행할 수 있음(GET, POST, PUT, PATCH, DELETE 등)
- URI에는 리소스의 식별자만 포함하며, 리소스의 상태 정보는 HTTP 응답 코드를 이용하여 전달
- Hypermdedia가 포함되지 않아, API 사용자는 리소스에 대한 정보를 미리 알고 있어야 함
- 이 수준만 되어도 충분히 잘 작성된 API라고 할 수 있음
-
- RESTful하게 디자인된 API의 최고 수준
- Hypermedia를 이용하여 API의 상태와 작업 흐름을 제어
- API 사용자는 리소스에 대한 정보를 미리 알고 있지 않아도, API에서 제공하는 링크를 따라가며 작업 수행 가능
- Hypermedia를 이용하여 리소스 간의 관계를 명확하게 정의하고, 새로운 리소스를 생성하거나 수정할 때 API 사용자가 해야할 작업을 알려줌
2. OPEN API
-
OPEN API란?
- OPEN API는 제 3자가 웹 애플리케이션 또는 서비스와 상호 작용할 수 있는 인터페이스를 제공하는 것을 말한다. 이를 통해 다른 개발자나 기업은 해당 서비스의 데이터와 기능을 활용하여 자신의 애플리케이션을 개발할 수 있다.
-
OPEN API의 장점
- 다양한 응용 프로그램이나 시스템 간에 상호 작용할 수 있어 기존 시스템을 활용해 새로운 비즈니스 모델을 개발할 수 있다.
- 기업 내부에서 다른 부서나 개발자들 간에 협업을 쉽게 할 수 있다.
- 개발 시간을 단축할 수 있다. OPEN API를 활용하면 필요한 기능을 직접 개발하는 것보다 적은 시간과 비용으로 기능을 구현할 수 있다.
-
OPEN API의 단점
- 보안 문제가 발생할 수 있다. OPEN API를 통해 민감한 정보에 접근할 수 있기 때문에 보안에 취약할 수 있다.
- API 버전 관리가 필요하다. API는 지속적으로 업데이트되기 때문에 이전 버전과 호환성을 유지하기 위해 버전 관리가 필요하다.
- 서비스 제공자는 이용료를 부과할 수 있다. 따라서 사용자는 이용료 문제에 대해 고려해야 한다.
-
API Key
- API Key는 API를 호출할 때 인증 및 권한 부여를 위해 사용되는 고유한 문자열이다. API Key를 가진 클라이언트는 서버로부터 데이터나 기능을 요청할 수 있으며, 서버는 해당 클라이언트의 권한을 확인하여 요청을 승인 또는 거부할 수 있다. 이를 통해 서버는 불법적인 요청이나 악의적인 공격을 방지할 수 있다. API Key는 일반적으로 클라이언트 ID와 비밀번호를 결합하여 생성되며, 안전한 보관이 필요하다.
오 장점과 단점까지 정리하셨군요! 잘 읽고갑니다 👍