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개의 댓글