어떤 서버의 특정 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어
API를 이용하면 두 개의 소프트웨어가 서로 통신을 주고 받을 수 있다.
가장 대표적인 2가지 방식에는 REST와 SOAP가 있다. 사용 방식은 비슷하지만 REST는 아키텍처 스타일이고, SOAP는 프로토콜 그 자체이다.
네트워크를 통해서 컴퓨터들끼리 통신할 수 있게 해주는 아키텍처 스타일
JSON
방식의 데이터 포멧 사용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를 통해 객체 형태로 바꿔준다.
그 자체로 프로토콜
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 통신을 편하게 만들어준다.