REST API가 머야?

devdo·2021년 12월 30일
0

네트워크

목록 보기
5/7

API란?

API는 응용 프로그램(애플리케이션)에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말한다.

인터페이스란 게 내부의 구현된 건 가리고 외부에 노출된 경로만 가지고 이용한다는 뜻을 가진다.

즉, API는 리모컨과 점원처럼 애플리케이션과 운영체제 그리고 애플리케이션과 프로그래밍 언어가 제공하는 기능 사이의 '상호 작용'을 도와준다.

파일 제어, 창 제어, 화상 처리, 문자 제어 등등 Web API로 SOAP, REST 가 있다.


REST(Representational State Transfer) - 네트워크 아키텍쳐 구성조건(6가지)

REST는 자원(URL)의 표현으로 상태를 주고받는 것을 표방한 네트워크 아키텍쳐란 뜻이다.

그 REST 아키텍쳐를 구성하는 조건이 아래와 같다.

  1. Client-Server : 서버와 클라이언트 작업을 분리함으로써 서로 의존하지 않게 별도로 진화할 수 있다. 이렇게 하면, 클라이언트는 서버의 리소스 URI만 알면 되기에 구성을 단순화하고 확장성도 단순화할 수 있다.

  2. Stateless : 클라이언트에서 서버로의 각 요청에는 그 요청을 이해하는 데 필요한 모든 정보가 포함된다. 따라서 요청에 대한 정보는 전적으로 클라이언트만 가지고 있어야 하며 서버는 그 정보를 취하지 않게 한다.

  3. cache : 클라이언트는 서버의 응답을 Cache할 수 있어야 한다.
    클라이언트가 Cache를 통해서 응답을 재사용할 수 있어야 하며, (cache-control 헤더를 통하여 캐시 여부 명시가 가능하다.) 이는 서버의 부하를 낮춘다.

  4. layered system(계층화) : 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야 하며, 이를 확장 할 수 있어야 한다.

  5. uniform interface(인터페이스 일관성) : 전체적인 시스템 아키텍처를 간단하고 잘 파악할 수 있도록 하기 위한 약속된 Interface, 해당 규약을 REST를 사용자들이 지켜야 한다.

  6. code-on-demand(선택적) : 서버가 클라이언트에 보내는 Code, StatusCode를 보내는 것을 말한다. 선택적이다.


SOAP vs REST

REST API를 이해하기 앞서 대비되는 SOAP 개념도 알아두면 도움이 된다.
REST와 SOAP는 각기 다른 두 가지의 온라인 데이터 전송 방식이다.

SOAP(Simple Object Access Protocol)란

SOAP은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. - 위키백과

SOAP는 프로토콜이지만, REST는 프로토콜이 아니라는 점 그리고 전송포멧으로 SOAP는 xml, REST는 json을 사용하는 것이 주요 차이점이다.

일반적으로 API는 활용 사례와 개발자의 선호에 따라 REST 또는 SOAP 중 하나를 준수한다고 한다.

출처 : https://www.redhat.com/ko/topics/integration/whats-the-difference-between-soap-rest


그럼 REST API는?

REST(Representational State Transfer: 자원의 상태 전달) API는 웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고, 해당 리소스에 대한 행위를 HTTP Method로 정의하는 방식을 사용하여 JSON과 같은 다양한 형식으로 메시지를 반환할 수 있는 API를 위한 아키텍쳐 스타일이다.

이러한 이유로, 달리 어떠한 프로그래밍 언어로든 읽을 수 있고, 인간과 기계가 모두 읽을 수 있으며, 경량화되어 있기 때문에 선호되는 메시지 형식이라 할 수 있다.

리소스(HTTP URI로 정의됨)를 어떻게 하겠다(HTTP Method + Payload)를 구조적으로 깔끔하게 표현하는 방법이라 생각하면 쉽게 이해가 된다.


RESTful API 란?

RESTful API는 REST API 설계 가이드를 따른 API을 말한다.

즉, REST API의 철학대로
API를 RESTful 하게 만든다는 것은 그 자체만으로도 API의 목적이 무엇인지 명확하게 하는 바라는 걸 이해해야 한다.

REST API 설계 가이드에 따라 API를 만들어서 웹 서비스를 제공하면 해당 웹 서비스는 RESTful하다고 하는 것이다.


REST API의 설계 가이드

  • /(슬래시)계층 관계를 나타낼때 사용합니다.
   http://restapi.example.com/houses/apartments
   http://restapi.example.com/animals/mammals/whales
  • URI 마지막 문자에 /(슬래시)를 사용하지 않습니다.
   http://restapi.example.com/houses/apartments/ (X)
   http://restapi.example.com/houses/apartments  (0)
  • URI에 _(underscore)는 사용하지 않도록 합니다. 또한 영어 대문자보다는 소문자를 씁니다.
    그리고 가독성을 위해서 긴 단어는 잘 사용하지 않습니다.
    차라리 -(하이픈)를 씁니다.
  • URI에 동사는 GET, POST, PUT, DELETE와 같은 HTTP Method를 표현하기 때문이다.
    URI 자원은 동사가 아니라 명사로 표기한다.

  • URI에 파일의 확장자(예를들어 .json , .JPGE)를 포함 시키지 않습니다.

   http://restapi.example.com/members/soccer/345/photo.jpg (X)
  • 사용 예)

REST API의 특징 알아둘 점 - Http의 특징

  • 동기적 통신 방식이다.
    메시징 방식(RabbitMQ, kafka 등)은 비동기적 통신 방식이라는 점에서 차이가 있다.
  • Http 통신을 사용해 stateless 특징을 가지고 있다.


참고

profile
배운 것을 기록합니다.

0개의 댓글