Rest API 란?

김동호·2022년 4월 29일
0

Whatis

목록 보기
6/6
post-thumbnail

Rest API

  • "Representational State Transfer"의 약자이며 "응용 프로그램이나 장치가 서로 연결하고 통신하는 방법을 정의하는 규칙 집합"이다.

장점

  • 거이 모든 프로그래밍 언어로 개발할 수 있는 다양한 데이터 형식 지원
  • 높은 수준의 유연성과 자유를 제공

디자인 규칙

  • 가장 기본적인 수준에서 API는 애플리케이션이나 서비스가 다른 애플리케이션의 서비스 내 리소스에 액세스 할 수 있도록 하는 메커니즘입니다. 접근하는 응용 프로그램이나 서비스를 클라이언트라고 하고 리소스를 포함하는 응용 프로그램이나 서비스를 서버라고 합니다.
  • SOAP 또는 XML-RPC와 같은 일부 API는 개발자에게 엄격한 프레임워크를 부과합니다. 그러나 REST API는 거의 모든 프로그래밍 언어를 사용하여 개발할 수 있으며 다양한 데이터 형식을 지원합니다. 유일한 요구 사항은 아키텍처 제약 조건이라고도 하는 다음 6가지 REST 디자인 규칙에 맞춰야 한다는 것입니다.
  1. 균일한 인터페이스(Uniform interface)
    • 동일한 리소스에 대한 모든 API 요청은 요청의 출처에 관계없이 동일하게 표시 
    • REST API는 사용자의 이름이나 이메일 주소와 같은 동일한 데이터가 하나의 URI(Uniform Resource Identifier)에만 속하도록 해야 한다. 
    • 리소스는 너무 크지 않아야 하지만 클라이언트가 필요로 하는 모든 정보를 포함해야 한다.
  2. 클라이언트-서버 분리(Client-server decoupling)
    • REST API 설계에서 클라이언트와 서버 애플리케이션은 서로 완전히 독립적이어야 한다.
    • 클라이언트 애플리케이션이 알아야 하는 유일한 정보는 요청된 리소스의 URI이다.
    • 다른 방식으로 서버 응용 프로그램과 상호 작용할 수 없다. 
    • 마찬가지로 서버 응용 프로그램은 HTTP를 통해 요청된 데이터에 전달하는 것 외에는 클라이언트 응용 프로그램을 수정해서는 안 된다..
  3. 무국적자(Statelessness)
    • REST API는 상태 비저장 상태이다.
    • 즉, 각 요청에는 처리에 필요한 모든 정보가 포함되어야 합니다.
    • REST API에는 서버 측 세션이 필요하지 않다. 
      • 서버 애플리케이션은 클라이언트 요청과 관련된 데이터를 저장할 수 없습니다.
  4. 캐시 가능성(Cacheability)
    • 가능한 경우 클라이언트 또는 서버 측에서 리소스를 캐시 할 수 있어야 한다. 
      • 서버 응답에는 전달된 리소스에 대해 캐싱이 허용되는지 여부에 대한 정보도 포함되어야 합니다. 목표는 클라이언트 측의 성능을 개선하는 동시에 서버 측의 확장성을 높이는 것입니다.
  5. 계층화된 시스템 아키텍처
    • REST API에서 호출과 응답은 서로 다른 계층을 거칩니다. 
      • 일반적으로 클라이언트와 서버 응용 프로그램이 서로 직접 연결되어 있다고 가정하지 말아야 한다.통신 루프에는 다양한 중개자가 있을 수 있다.. REST API는 클라이언트나 서버가 최종 애플리케이션 또는 중개자와 통신하는지 여부를 알 수 없도록 설계해야 합니다.
  6. 주문형 코드(선택 사항)
    • REST API는 일반적으로 정적 리소스를 보내지만 어떤 경우에는 응답에 실행 코드(예: Java 애플릿)도 포함될 수 있습니다. 이러한 경우 코드는 요청 시에만 실행되어야 합니다.

REST API 작동 방식

  • REST API는 리소스 내에서 레코드(CRUD라고도 함) 생성, 읽기, 업데이트 및 삭제와 같은 표준 데이터베이스 기능을 수행하기 위해 HTTP 요청을 통해 통신합니다. 
  • 예를 들어 REST API는 GET 요청을 사용하여 레코드를 검색하고 POST 요청을 사용하여 레코드를 생성하고 PUT 요청을 사용하여 레코드를 업데이트하고 DELETE 요청을 사용하여 레코드를 삭제합니다. 

  • 모든 HTTP 메서드는 API 호출에서 사용할 수 있습니다. 잘 설계된 REST API는 HTTP 기능이 내장된 웹 브라우저에서 실행되는 웹 사이트와 유사합니다.
  • 특정 순간 또는 타임스탬프의 리소스 상태를 리소스 표현이라고 합니다. 이 정보는 JSON(JavaScript Object Notation), HTML, XLT, Python, PHP 또는 일반 텍스트를 포함한 거의 모든 형식으로 클라이언트에 전달할 수 있습니다.
  • JSON은 사람과 기계가 모두 읽을 수 있고 프로그래밍 언어에 구애받지 않기 때문에 널리 사용됩니다.
  • 요청 헤더 및 매개변수는 메타데이터, 권한 부여, URI(Uniform Resource Identifier), 캐싱, 쿠키 등과 같은 중요한 식별자 정보를 포함하기 때문에 REST API 호출에서도 중요합니다. 요청 헤더 및 응답 헤더는 기존 HTTP 상태 코드와 함께 잘 설계된 REST API 내에서 사용됩니다.

Soap 란?

  • SOAP은 웹 서비스 상호작용에서 사용되는 XML 메시지 형식입니다. SOAP 메시지는 일반적으로 HTTP 또는 JMS를 통해 송신되지만 다른 전송 프로토콜을 사용할 수도 있습니다. 특정 웹 서비스에서 SOAP을 사용하는 것은 WSDL 정의에서 설명됩니다.

참고

IBM Rest API 문서

IBM SOAP 문서

profile
Backend Dev

0개의 댓글