API란?
API는 어떤 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구이다. API를 이용하면 두 개의 소프트웨어가 서로 통신을 주고받을 수 있다.

REST API?
네트워크를 통해서 컴퓨터들끼리 통신할 수 있게 해주는 아키텍처 스타일이다.

인터넷 식별자(URI)와 HTTP 프로토콜을 기반으로 한다.
HTTP프로토콜 덕분에 단순함이 핵심이다.
클라이언트-서버 모델로 구축되었다는 것을 의미.
웹에 최적화되어있고 주로 JSON을 사용해 브라우저들 간에 호환성이 좋다. 

- 사용하기 쉽다.
- 배우기 쉽다.
- SOAP는 모든 메시지에 XML을 사용하지만 REST는 JSON을 주로 사용해 가볍다.
- 빠르다.


SOAP API?
그 자체로 프로토콜이며, 보안이나 메시지 전송 등에 있어서 REST보다 더 많은 표준들이 정해져 있기 때문에 복잡하다. 이러한 표준들로 오버헤드가 많지만 보안, 트랜잭션 등을 준수해야 하는 종합적인 기능이 필요한 조직에게는 적합한 방식이다. (기업용 애플리케이션 작업에 이상적) 데이터 포맷으로 XML만을 사용한다.
SOAP 표준에는 성공/반복 실행 로직이 규정되어 있기 때문에 SOAP API를 통해서 통신을 할 때 처음부터 끝까지 신뢰성을 제공한다.

- 언어, 플랫폼, 전송 독립적 (REST는 HTTP가 필요)
- 분산된 기업환경에 적합 (REST는 직접적인 point-to-point 통신)
- 표준화
- WS 표준에 따라 전처리 확장성을 제공한다.
- 빌트인 에러 다룬다.



REST와 SOAP는 각기 다른 두 가지의 온라인 데이터 전송 방식입니다. 둘 다 웹 애플리케이션 간 데이터 통신을 허용하는 애플리케이션 프로그래밍 인터페이스(API)를 구축하는 방법을 정의합니다. REST는 아키텍처 원칙 세트이고, SOAP은 W3c에서 유지관리하는 공식 프로토콜입니다.

REST
1. REST는 웹 서비스와 모바일 애플리케이션 경량화의 필요에 맞춘 아키텍처 원칙 세트.
2. 데이터 요청이 전송될 때 HTTP를 통해 이루어진다. 요청을 수신하면 REST용으로 설계된 API가 HTML, XML, 일반 텍스트, JSON과 같은 다양한 형식으로 메시지를 반환할 수 있다.
JSON은 어떠한 프로그래밍언어로든 읽을 수 있고, 인간과 기계 모두 읽을 수 있고, 경량화되어있기 때문에 선호되는 메시지 형식이다.

RESTful 애플리케이션이 갖춰야 할 요소
1. 클라이언트, 서버, 리소스로 구성된 클라이언트-서버 아키텍처가 필요하다.
2. 요청이 통과하는 서버에 클라이언트 콘텐츠가 저장되지 않는 stateless 클라이언트-서버 커뮤니테이션이 필요하다. (대신 세션의 상태에 대한 정보가 클라이언트에 저장된다.)
3. 일부 클라이언트-서버 간 상호 작용의 필요성을 제거할 캐시 가능 데이터가 필요하다.
4. 애플리케이션 요구 사항별로 표준화된 형식으로 정보를 전송할 수 있도록 구성 요소 간 통합된 인터페이스가 필요하다.
5. 클라이언트-서버 간의 상호 작용을 계층적으로 조정할 수 있도록 계층화된 시스템 제약이 필요하다.
6. 실행 가능한 코드를 전송해 서버가 클라이언트의 기능을 확장할 수 있게 해주는 코드 온디맨드가 필요하다.

SOAP
SOAP는 다른 언어로 다른 플랫폼에서 빌드된 애플리케이션이 통신할 수 있도록 설계된 최초의 표준 프로토콜이다. 프로토콜이기 때문에 복장성과 오버헤드를 증가시키는 빌트인 룰을 적용하므로, 페이지 로드 시간이 길어질 수 있다. 빌트인 컴플라이언스를 제공하므로 기업에서 선호하는 방식. 빌트인 컴플라이언스 표준에는 보안과 트랜잭션 ACID가 포함된다.

웹 서비스 보안 : 토큰이라고 불리는 고유 식별자를 통해 메시지를 보호하고 전송하는 방식을 표준화한다.
WS-ReliableMessaging : 불안정한 IT인프라로 전송되는 메시지 간 오류 처리를 표준화합니다.
웹 서비스 주소지정 WS-addressing : 심층 네트워크에 라우팅 정보를 유지관리하는 대신, SOAP 헤더 내에 메타데이터로 해당 정보를 패키징한다.
웹 서비스 기술 언어 WSDL : 웹 서비스가 무엇을 하는지, 해당 서비스의 시작과 종료 위치를 기술합니다.
데이터에 대한 요청이 SOAP API로 전송되는 겨우 HTTP(웹 브라우저), SMTP(이메일), TCP 등의 다양한 애플리케이션 레이어 프로토콜을 통해 처리될 수 있다. 그러나 요청이 수신되면, 인간과 기계가 모두 읽을 수 있는 마크업언어인 XML 문서 형식으로 반환 SOAP 메시지가 반환된다. SOAP API에 대한 완료된 요청을 브라우저에서 캐시할 수 없으므로, API로 재정송하지않는 한 이후에 액세스할 수 없다.

SOAP - REST 차이
REST는 유연한 구현을 제공하는 가이드라인 세트고, SOAP는 XML 메시징과 같은 특정 요건이 있는 프로토콜이다.

REST API 는 경량화되어 있기 때문에 IoT, 모바일 애플리케이션개발, 서버리스 컴퓨팅과 같이 보다 새로운 컨텍스트에 이상적이다. SOAP 웹 서비스는 많은 기업에서 필요로 하는 기본 보안과 트랜잭션 컴플라이언스를제공하지만, 이로 인해 좀 더 무거운 경향이 있다.

 

 

두 사이트를 참고해서 정리했습니다.

https://www.redhat.com/ko/topics/integration/whats-the-difference-between-soap-rest#%EA%B0%9C%EC%9A%94

 

REST와 SOAP 비교

REST와 SOAP는 웹 애플리케이션 간 데이터 통신을 허용하는 애플리케이션 프로그래밍 인터페이스(API)를 구축하는 방법을 정의합니다.

www.redhat.com

https://www.soapui.org/learn/api/soap-vs-rest-api/

 

SOAP vs REST APIs: Which Is Right For You? | SoapUI

The age old question: what is the difference between SOAP and REST APIs, and which one is right for my project? Just because our name is SoapUI, doesn't mean that we also don't know what we are talking about when it comes to explaining RESTful web services

www.soapui.org

 

+ Recent posts