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