[WEB] Rest API와 Soap API

minidoo·2021년 2월 8일
0

WEB

목록 보기
3/8
post-thumbnail

API

어떤 서버의 특정 부분에 접속해서 그 안에 있는 데이터서비스를 이용할 수 있게 해주는 소프트웨어

API를 이용하면 두 개의 소프트웨어가 서로 통신을 주고 받을 수 있다.
가장 대표적인 2가지 방식에는 RESTSOAP가 있다. 사용 방식은 비슷하지만 REST는 아키텍처 스타일이고, SOAP는 프로토콜 그 자체이다.

1. REST API

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

  • 인터넷 식별자(URL)과 HTTP 프로토콜 기반
  • 브라우저 간 호환성이 좋은 JSON 방식의 데이터 포멧 사용
  • 단일한 인터페이스 사용: 해당 API를 사용하는 애플리케이션들이 동일한 경로를 사용해 접속

사용예제

let opt = {		--- (1)
    headers: {
        "content-type"	: "application/json",
        "token"		: "abcdefg123456"
    },
    data: {
        "name" : "minidoo",
        "blog" : "minidoo.log"
    }
};

try {			--- (2)
    let url = "https://velog.io/@minidoo/api/information";
    let result = HTTP.post(url, opt);
    let data = JSON.parse(result.content);	--- (3)
    
    return data;
} catch(err) {
    console.log(err.message);
}

(1) API의 헤더 정보와 body 값을 정의한다. 보통 다른 업체의 API를 사용할 때는 고유의 token을 발급 받는다. 토큰 정보는 private하기 때문에 실행 환경에 넣어두는 것이 좋다.
(2) API 통신은 다양한 에러가 발생할 수 있다. 따라서 사전에 try/catch을 사용해 에러를 잡는 것이 좋다. post/get/delete 등의 방식에 따라 HTTP.post()와 같이 사용한다. 첫 번째 인자에는 사용할 API주소, 두 번째 인자에는 option 정보를 넣는다.
(3) API 통신 결과는 string으로 나오기 때문에 parse를 통해 객체 형태로 바꿔준다.

2. SOAP API

그 자체로 프로토콜

  • 보안이나 메시지 전송 등에 있어 엄격한 규약을 가짐
  • 데이터 포맷으로 XML만 사용
  • 자체적인 ACID 기준이 있어 데이터의 변형을 줄여줌
    ( ACID? 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질)

사용예제

easy-soap-request : https://www.npmjs.com/package/easy-soap-request

import soapRequest from 'easy-soap-request';

(1) 필수 Parameters 설정
let params = `
    <DATA>
      <NAME>minidoo</NAME>
      <VLOG>minidoo.log</VLOG>
    </DATA>
`;

(1-1) 공백제거
params = params.replace(/>\s*/g, '>').replace(/\s*</g, '<');

(2) xml 스키마 설정
let xml = `
    <?xml version='1.0' encoding='utf-8'?>
    <soap:Envelope xmlns:xsi='' ...>
      <soap:Body> ... </soap:Body>
    </soap:Envelope>
`;

(2-1) 공백제거
xml = xml.replace(/>\s*/g, '>').replace(/\s*</g, '<');

(3) SOAP API 통신
let url = "https://velog.io/@minidoo/api/information";
let soapHeader = {
    "Content-type" : "text/xml";
};

let opt = { url: url, soapHeader: soapHeader, xml: xml };

(async () => {
    const { response } = await soapRequest(opt); 
    const { body } = response;
    
    console.log(body);
})();

SOAP 방식은 데이터 포멧으로 오직 xml만 허용된다.
xml의 경우 JSON과 다르게 띄어쓰기나 줄 바꿈 등을 정확하게 써줘야 한다. (공백제거 필요)

위의 예제에서 easy-soap-request 라이브러리를 사용하였는데, Node 환경에서 정해진 규격에 맞춰 SOAP API 통신을 편하게 만들어준다.

0개의 댓글