RESTFUl API가 과연 무엇일까요?
Restful API라는 것은 Representational State Transfer API의 약자로, 웹 애플리케이션의 클라이언트와 서버 간 통신을 위한 *아키텍처입니다. Restful API는 HTTP 프로토콜을 기반으로 하며, Restful 웹 서비스는 HTTP 요청을 통해 데이터를 검색하거나 조작하는 데 사용된다고 합니다.
그렇다면 Restful API의 특징은 무엇일까요?
1.자원(Resourc) : 모든 자원에 고유한 식별자가 있고, 식별자를 통해 자원에 접근하는 방식.
2.행위(Verb) : HTTP 프로토콜의 메서드를 사용하여 자원에 대한 행위를 나타냅니다.
주로 사용되는 메서드는 GET, POST, PUT, DELETE 등이 있습니다
3.표현(Representations) - 클라이언트가 자원의 상태를 요청할 때, 서버는 해당 자원의 상태를 클라이언트에게 응답합니다.
이 응답은 JSON, XML 등 다양한 형태로 제공될 수 있습니다.
4.자기 서술적 메시지(Self-descriptive message) - RESTful API에서는 메시지 자체가 어떤 작업을 수행하는지 명확하게 알 수 있어야 합니다.
예를 들어, HTTP 프로토콜의 Accept 헤더를 사용하여, 클라이언트가 원하는 표현 형태를 지정할 수 있습니다.
5.하이퍼미디어(Hypermedia) - RESTful API에서는 하이퍼미디어를 사용하여, 자원 간의 관계를 표현합니다.
예를 들어, 블로그 글에 대한 URI를 표시하면서, 해당 글과 관련된 댓글, 태그 등의 정보도 함께 제공할 수 있습니다.
위와 같은 3개의 특징으로 인해서 RestFul API를 구분할 수 있습니다.
1. API의 사용자들은 API를 보다 쉽게 이해하고 사용할 수 있습니다.
- RESTful API를 구현하면, 자원의 구조를 명확하게 정의하고
- HTTP 메소드를 사용하여 자원에 대한 행위를 정의할 수 있습니다.
2. Restful API는 현재 가장 인기 있는 웹 서비스 아키텍처 중 하나입니다.
- Restful API를 따르는 웹 서비스는 클라이언트와 서버 간의 의사소통이 단순하고 효율적입니다.
- 또한, Restful API는 HTTP 프로토콜을 사용하기 때문에, HTTP 프로토콜을 지원하는 모든 플랫폼에서 사용할 수 있습니다.
Restful API의 종류
GET - 자원을 조회합니다.
POST - 자원을 생성합니다.
PUT - 자원을 수정합니다.
DELETE - 자원을 삭제합니다.
PATCH - 자원을 부분적으로 수정합니다.
OPTIONS - 서버가 지원하는 메서드를 확인합니다.
HEAD - GET 메서드와 유사하게, 자원의 헤더 정보만을 조회합니다.
Restful API가 아닌 것들
SOAP (Simple Object Access Protocol) - XML 기반의 프로토콜로, RESTful API와는 다른 방식으로 웹 서비스를 제공합니다.
gRPC (Google Remote Procedure Call) - 프로토콜 버퍼를 사용하여, RESTful API와는 다른 방식으로 통신합니다.
GraphQL - RESTful API와는 다른 쿼리 언어를 사용하여 데이터를 요청하고 응답합니다.
XML-RPC - XML을 사용하여 데이터를 전송하고, RPC(Remote Procedure Call) 방식으로 서버에서 제공하는 메소드를 호출합니다.
JSON-RPC - JSON을 사용하여 데이터를 전송하고, RPC 방식으로 서버에서 제공하는 메소드를 호출합니다.
위와 같은 API들은 RESTful API와는 다른 프로토콜과 방식으로 웹 서비스를 제공하므로, 사용 시 RESTful API와의 차이점을 이해하고 적절한 선택을 해야 합니다.
*아키텍처 : 아키텍처(Architecture)란 시스템이나 소프트웨어의 구조를 설계하고 구현하는 것을 의미.
'CS' 카테고리의 다른 글
캐시의 특징과 예시 (0) | 2023.03.29 |
---|---|
프레임워크와 라이브러리의 차이점 (0) | 2023.03.29 |
Hoisting 과 TDZ란? (0) | 2023.03.28 |
parameter와 argument의 차이점 (0) | 2023.03.28 |
웹 페이지가 랜더링되는 과정 (2) | 2023.03.27 |