Tag Archives: 에코서버

[Source | Nodejs] 외부연동 테스트 서버 – HTTP

외부연동 개발시 임시로 서버를 실행해 놓고 테스트 하기 위한 코드를 정리한다.


작성일 : 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"
}

파일을 실시간으로 읽어 응답하기 때문에 서버 재시작 없이 응답값을 변경하여 테스트 할 수 있다.