REST? RESTful API?

고먐미·2023년 3월 27일
0

REST API란?
REST(Representational State Transfer)는 로이 필딩이 2000년 박사 학위 논문에서 소개한 웹 서비스 구축을 위한 아키텍처 스타일입니다. RESTful API는 REST의 원칙을 따르는 API입니다.

REST의 구성 요소

  1. 자원 (Resource) : HTTP URI
  2. 자원에 대한 행위(Verb) : HTTP Method
  3. 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load

REST의 구체적인 개념

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(GET, POST, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.

즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미합니다.

CRUD Operation
Create : 생성(POST)
Read : 조회 (GET)
Update : 수정(PUT)
Delete : 삭제(DELETE)
HEAD: header 정보 조회(HEAD)


RESTful API?

RESTful API는 클라이언트와 서버가 서로 상호 작용하는 방식을 설명하는 일련의 제약 조건을 기반으로 합니다. 이러한 제약 조건에는 다음이 포함됩니다

1. 클라이언트-서버 아키텍처

클라이언트와 서버는 서로 독립적이며 개별적으로 발전할 수 있습니다.

2. 상태 비저장

서버는 요청 사이에 클라이언트의 컨텍스트에 대한 어떠한 상태도 저장하지 않습니다. 클라이언트의 각 요청에는 요청을 처리하는 데 필요한 모든 정보가 포함되어야 합니다.

3. 캐시 가능

서버는 응답을 캐시할 수 있는지 여부를 표시해야 합니다.

4. 통일된 인터페이스

클라이언트와 서버 간의 인터페이스는 확장성을 촉진하고 구현을 단순화하기 위해 표준화되어야 합니다. 인터페이스는 리소스 기반이어야 하며, 즉 각 리소스에 고유 식별자(URI)가 있어야 하고 클라이언트가 HTTP 메서드를 사용하여 리소스에 대한 CRUD(만들기, 읽기, 업데이트, 삭제) 작업을 수행할 수 있어야 합니다.

5. 계층화된 시스템

시스템은 각 계층이 특정 기능을 담당하는 계층으로 설계되어야 합니다. 이는 확장성을 촉진하고 구현을 단순화합니다.

정리

RESTful API는 일반적으로 리소스와 상호 작용하기 위해 GET, POST, PUT, DELETE와 같은 HTTP 메서드를 사용합니다. (이 외에 PATCH, OPTIONS 도 있음)
예를 들어 클라이언트는 리소스에서 데이터를 검색하기 위해 GET 요청을 보내고, 새 데이터를 생성하기 위해 POST 요청을 보내고, 기존 데이터를 업데이트하기 위해 PUT 요청을 보내거나, 데이터를 삭제하기 위해 DELETE 요청을 보낼 수 있습니다.

전반적으로 RESTful API는 간단하고 확장 가능하며 구현하기 쉽기 때문에 웹 서비스를 구축하는 데 널리 사용되는 방법입니다. 클라이언트가 표준화된 HTTP 메서드를 사용하여 리소스와 상호 작용할 수 있으므로 상호 운용성을 촉진하고 구현을 단순화합니다.


RESTful API 가 아닌 것도 있을까?

1. SOAP API (Simple Object Access Protocol)

SOAP는 XML 기반의 메시지 교환 프로토콜로, 서버와 클라이언트 간에 XML 데이터를 교환하여 통신합니다. SOAP API는 다른 프로토콜보다 좀 더 복잡한 메시지 교환 방식을 사용하며, 보안이나 오류 처리 등의 기능도 잘 갖추고 있습니다. 하지만 이러한 복잡성 때문에 API를 개발하고 유지보수하는 데에는 비용과 시간이 많이 들어가는 단점이 있습니다.

2. GraphQL API

GraphQL은 Facebook에서 개발한 쿼리 언어입니다. 클라이언트에서 필요한 데이터를 정의하고, 서버에서는 해당 데이터만 제공하는 방식으로 동작합니다. 이를 통해 클라이언트에서 원하는 데이터만 요청하고, 불필요한 데이터를 제한할 수 있습니다. 또한 GraphQL은 데이터 송수신에 필요한 네트워크 대역폭을 줄이는 기능도 제공합니다.

3. RPC API (Remote Procedure Call)

RPC는 원격 프로시저 호출 방식으로 동작합니다. 클라이언트에서 서버에 메서드를 호출하면, 서버는 해당 메서드를 실행하고 결과를 반환하는 방식으로 동작합니다. RPC는 단순하고 직관적인 방식으로 API를 구현할 수 있지만, API의 규모가 커지거나 복잡해질수록 RPC는 유지보수하기 어려워질 수 있습니다.


출처

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

profile
개념을 이해하고 다른사람에게도 알려줄 수 있는 개발자가 되고 싶어요..

0개의 댓글