외부연동 개발시 임시로 서버를 실행해 놓고 테스트 하기 위한 코드를 정리한다.
작성일 : 2022-01-26 nodeJs Ver : v16.13.1
1> 코드작성 (server.js)
// For Execute Shell
// node server.js
const http = require("http");
const fs = require('fs');
const port = 9090;
const name = "OPENDOCS_TEST_SERVER";
http.createServer((req, res) =>{
let bodyStr = '';
req.on("data", chunk => {
bodyStr += chunk;
});
req.on("end", () => {
// Request
let transactionId = Date.now().toString();
console.log(`---------- Request (${name} : ${transactionId}) ----------`);
console.log(req.headers);
console.log("----------------------------------------");
console.log(bodyStr);
// Response
let resStatus = 404;
let resHead = {"Content-Type": "application/json", transactionId};
let resBody = {};
if(req.url == "/url_a") {
// - TODO
const fileName = 'url_a.json';
resStatus = 200;
resHead = {...resHead, "additionalHead": "url_a"};
const jsonFile = fs.readFileSync(`./ServerTestCase/${fileName}`, 'utf8');
resBody = JSON.parse(jsonFile);
} else if(req.url == "/url_b") {
// - TODO
const fileName = 'url_b.json';
resStatus = 200;
resHead = {...resHead, "additionalHead": "url_b"};
const jsonFile = fs.readFileSync(`./ServerTestCase/${fileName}`, 'utf8');
resBody = JSON.parse(jsonFile);
}
res.writeHead(resStatus, resHead);
res.end(JSON.stringify(resBody));
console.log(`---------- Response (${name} : ${transactionId}) ----------`);
console.log(resHead);
console.log("----------------------------------------");
console.log(resBody);
console.log("------------------------------------------------------------//\n\n\n");
});
}).listen(port);
2> 응답샘플 작성 : ServerTestCase 폴더 아래 선언한 fileName 과 일치하게 생성
// ./ServerTestCase/url_a.json
{
"TEST": "TEST URL-A"
}
// ./ServerTestCase/url_b.json
{
"TEST": "TEST URL-B"
}
파일을 실시간으로 읽어 응답하기 때문에 서버 재시작 없이 응답값을 변경하여 테스트 할 수 있다.