우선, 약자(Abbreviation)에 대해 풀어보는것이 좋을 것 같아, 정의 먼저 간단하게 짚고 넘어가겠다.
✍ "API란?"
애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트로, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface) (X)
근데, 위와 같은 정의는 솔직히 와닿지 않는다. 그리고 사실 나 또한 웹프로그래밍을 했을 때에, API가 어떤 개념인지 직접 익혔으나, 막상 설명하려니 설명이 어려웠다.
그래서 이렇게 쉽게 정의해보았다.
✍ "API란?"
개발자가 직접 프로그램을 만드는데 기능을 구현하지 않고, API 제공자들이 제공하는 데이터와 모듈 등을 갖다가 쓸 수 있게 만든 것이 API와 API 문서 (O)
예를 들어서, 내가 라면 사이트를 홍보하려고 라면 사이트를 오픈했다. 여기다가 실시간으로 상담이 가능한, 채널톡이 매우 대표적이라고 볼 수 있다. 채널톡은 별도의 사이트가 있으면 , 홈페이지 상단 혹은 상단에 별도로 갖다가 붙여서 사용하는 형태로 사용이 가능하다.
채널톡 개발자 사이트에 들어가면, 아래 화면과 같이 실제로 api 다운로드가 가능하다.
Json 파일의 형식으로 다운로드가 가능한 모습이다.
그리고, 또한 나만의 랜딩페이지 혹은 사업 웹페이지에서 중간에 구글맵을 보여주고 싶다, 사업장 주소 노출해주고 싶다. 그것 역시 api이다. 예시를 들자면, 아래와 같은 것이 open api라고 볼 수 있다.
참고로 open api에는 구글맵, 카카오맵, 오픈스트리트맵 등이 존재한다.
사실 구글맵이나, 카카오맵같은 경우에는 매우매우 친숙할 것 같으나, 오픈스트리트맵의 경우 좀 처음들어본 사람이 대다수일 것 같아, 아래와 같이
스크린캡쳐화면을 첨부한다.
이러한 Web Application 형태의 API가 확산되자, 정보 교환을 위해 필요한 표준 프로토콜 사양이 개발된 것이다.
SOAP의 약자(Abbreviation)는 Simple Object Access Protocol이다.
웹 형태의 API가 확산 -> 정보교환을 위해 필요한 표준 프로토토콜 사양이 개발됨 = SOAP (Simple Object Access Protocol)
SOAP으로 설계된 API는 XML 메시지 형식을 사용하여, HTTP 또는 SMTP를 통해 요청을 수신한다.
여기서 HTTP 는 웹페이지 전송 프로토콜인 것은 알고 있는데, SMTP는 처음 듣는다. 우선, HTTP/s 와 같이 XML 기반 메세지를 컴퓨터 네트워크 상에서 교환하는 프로토콜과 같은 형태라는 맥락에서 이해하고, 다음에 제대로 정리해보겠다.
위키피디아에서 SOAP 의 정의
API 개념을 정리하다보니, 정말 수많은 프로토콜을 정의하고 공부하게 되는 구나.
IT는 역시나 유기적인 관계에 있는 개념이 많다보니 그런것 같다.
SOAP으로 설계된 API는 XML 메세지 형식을 사용하며 HTTP 또는 STMP를 통해 요청을 수신합니다. SOAP를 사용하다보면, 더 간편한 방법으로 애플리케이션을 다양한 환경에서 실행하거나 다양한 언어로 작성하여 정보를 공유할 수 있습니다.
SOAP(Simple Object Access Protocol) 은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. SOAP에는 몇가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(Remote Procedure Call:RPC) 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메시지를 요청 하고, 서버는 메시지를 즉시 응답하게 된다. SOAP는 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송(transport)과 상호 중립성(interaction neutrality)의 개념을 가져왔다.
XML은 대다수 회사들과 오픈 소스 개발 진영의 노력에 힘입어 광범위하게 사용되는 메시지 형식이므로 표준으로 선택되었다. 게다가 광범위하게 무료로 사용 가능한 툴이 상당수 포진하고 있는 점은 SOAP-기반 구현으로 옮겨가기 쉽게 하였다. XML의 문법은 다소 긴데, 이에는 장단점이 있다. 사람이 쉽게 읽을 수 있는 반면, 불필요한 정보때문에 처리속도가 늦어질 수 있다. CORBA, GIOP, ICE, DCOM은 이진 메시지 포맷을 사용하므로 전송량이 훨씬 적다. 그러나 XML 메시지 처리는 하드웨어로 빠르게 할 수 있다.[1][2] 이진 XML은 스트리밍 전송에 대한 대안으로 (속도를 높이는 수단으로) 검토되고 있다.
SOAP 샘플
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<getProductDetails xmlns="http://warehouse.example.com/ws">
<productId>827635</productId>
</getProductDetails>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP은 XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다. 「헤더」는 선택사항으로 반복이나 보안 및 트랜잭션을 정보로 하는 메타 정보를 가지고 있다. 「바디」부분은 주요한 정보인 정보를 가지고 있다.