CS, OS, Network

REST API, RESTful API에 대해서

Veams 2023. 4. 17.

API는 프로그램과 프로그램 사이에서 정보를 주고 받는 일종의 방식이다.

 

REST API는 HTTP를 이용해서 기계들이 통신을 할 때 HTTP가 가지고 있는 기능을 최대한 활용해서 명확하면서 단순하게 통신할 수 없을까?하는 고민에서 출발한 모범사례라고 할 수 있다.

- REST API는 HTTP 통신을 제어하는 과정에서 어떻게 하면 시행착오를 줄이고, 더 좋은 API를 만들 수 있는 가에 대한 고민의 결과물이 REST API라고 할 수 있다. (- 생활코딩)

 

REST 

REST(Representational State Transfer)는 '자원'을 이름(표현)으로 구분하여 해당 정보(자원의 상태)를 주고 받는 모든 것을 의미한다. REST API는 웹 서비스와 클라이언트 애플리케이션 간의 상호작용을 위한 아키텍쳐 스타일로, 다시말해 REST 아키텍처 스타일을 따르는 API를 의미한다. 

 

- 정보를 주고 받는데, 자원의 이름으로 구분이 된다.

 

REST의 구성요소 세 가지.

크게 자원, 행위, 표현으로 구분 할 수 있다.

자원

자원(Resource): REST API는 자원을 가지고 있다. 자원은 API를 통해 접근할 수 있는 모든 것을 의미한다. 보통 웹 서비스에서 제공하는 정보(기능)를 의미하며, 고유한 ID를 가지고 이를 통해 식별된다. 예를 들어, 쇼핑몰의 상품, 주문, 결제, 사용자 등이 자원이 될 수 있다.

- URI(Uniform Resource Identifier): REST API는 자원을 고유하게 식별할 수 있는 URL를 제공한다. URI는 자원의 위치를 명시하며, 클라이언트는 URI를 통해 서버에 요청을 보낸다. 예를 들어, /users/1은 ID가 1인 사용자를 나타낸다. 

 

행위

- HTTP 메서드: 클라이언트는 URI을 이용해 자원을 명시하고, 이를 조작하기 위해 HTTP 메서드, 구체적으로 GET, POST, PUT, DELETE 메서드가 사용된다. GET 메서드는 URI에서 지정한 자원의 상태를 가져오기 위해 사용되고, POST 메서드는 새로운 자원을 생성하기 위해 사용된다. PUT은 자원의 상태를 갱신, DELETE는 자원을 삭제하기 위해 사용한다.

 

표현

- 자원의 표현(Representation): 표현은 자원을 표현하기 위한 형식이다. 자원의 상태를 클라이언트와 서버 간에 교환 가능한 형식으로 변환한 것이다. 예를 들어, JSON, XML, HTML 등의 형식으로 작성될 수 있으며, 클라이언트가 이해할 수 있는 형태로 제공된다.  

- 상태 코드 (Status Code) : REST API는 HTTP 상태 코드를 사용하여 요청에 대한 응답을 반환한다. 상태 코드는 요청이 성공했는지, 실패했는지 등을 나타내는 데 사용된다.

- 메시지(Message): REST API는 메시지를 사용하여 요청과 응답을 전달한다. 메시지에는 요청 본문, 응답 본문 등이 포함된다. 요청 본문은 클라이언트가 서버로 전송하는 데이터이고, 응답 본문은 서버가 클라이언트로 반환하는 데이터이다.

 

REST의 특징

REST API는 다음의 특징을 통해 시스템의 유연성확장성을 높일 수 있고, 클라이언트와의 상호작용을 단순화하고 재사용성을 높인다.

  1. 클라이언트 - 서버 구조 (Client-Server Architecture)
    클라이언트와 서버는 각각 독립적인 역할을 수행하며, 서로의 구현(개발)에 관여하지 않는다.
    자원이 있는 쪽이 서버이며, 자원을 요청하는 쪽이 클라이언트이다.
  2. 무상태 (Stateless)
    서버는 클라이언트의 상태를 저장하지 않는다.
    각 요청은 독립적으로 처리되고, 클라이언트는 필요한 모든 정보를 요청에 포함해야 한다.
  3. 캐시 처리 (Cacheable)
    클라이언트는 서버로부터 받은 응답을 캐시에 저장할 수 있어야 한다.
    캐싱을 통해 네트워크의 부하를 줄이고 성능을 향상 시킬 수 있다.
  4. 계층화 (Layered System)
    서버는 여러 계층으로 구성될 수 있고, 각 계층은 독립적인 기능을 수행한다.
    API 서버는 순수 비즈니스 로직을 수행한다.
    이를 통하여 시스템의 유연성과 확장성을 향상 시킬 수 있다.
  5. 인터페이스 일관성 (Uniform Interface)
    일관된 인터페이스를 제공하여 상호작용을 단순화하고 재사용성을 높인다.
    표준 HTTP 메서드를 사용하여 자원에 접근하고 조작한다.

RESTful의 개념

- REST 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어

- REST 아키텍처를 따르는 API를 제공하는 웹서비스를 'RESTful' 하다고 한다.

- RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가 공식적으로 발표한 것이 아니다.

RESTful API

- REST 아키텍처 기반으로 구현된 API

- REST 답게 잘 작성된 API

- 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.

 

 

https://ko.wikipedia.org/wiki/REST

 

REST - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참고하십시오. 다른 뜻에 대해서는 레스트 문서를 참고하십시오. REST(Representational State Transfer)는 월드 와이드

ko.wikipedia.org

https://meetup.nhncloud.com/posts/92

 

REST API 제대로 알고 사용하기 : NHN Cloud Meetup

REST API 제대로 알고 사용하기

meetup.nhncloud.com

https://hanamon.kr/rest-api/

 

[서버] REST API란? - 하나몬

REST의 개념을 이해한다. REST의 특징을 이해한다. REST API의 개념을 이해한다. REST API의 설계 규칙을 이해한다. RESTful의 개념을 이해한다.

hanamon.kr

 

댓글