[Source | Nodejs] 테스트 클라이언트 – HTTP

API 테스트를 위한 클라이언트 코드를 정리한다.


작성일 : 2022-01-28
nodeJs Ver : v16.13.1


1> 코드작성 (client.js)

// For Execute Shell
//   node client.js URL-A
const http = require("http");
const name = "OPENDOCS_TEST_CLIENT";

if(process.argv.length < 3) {
    console.log("Error - TestCase Require.");
}
const testCase = process.argv[2];
const req = require(`./ClientTestCase/${testCase}`);

http.request(req, (res) => {
    let bodyStr = '';
    res.on("data", chunk => {
        bodyStr += chunk;
    });
    res.on("end", () => {
        // Request
        console.log(`---------- Result (${name} : ${testCase}) ----------`);
        console.log(res.headers);
        console.log("----------------------------------------");
        console.log(bodyStr);
        console.log("------------------------------------------------------------//\n\n\n");
    });
}).end(req.body);

2> 요청샘플 작성 : ClientTestCase 폴더에 {API명}.js 로 생성한다

// ./ClientTestCase/URL-A.js
// 테스트시 'node client.js URL-A' 명령으로 실행
exports.host = "127.0.0.1";
exports.port = 9090;
exports.method = "POST";
exports.path = "/url_a";
exports.headers = {"Content-Type": "application/json", "TEST": "TET"};
exports.body = JSON.stringify({
    data: "hello A"
});

// ./ClientTestCase/URL-B.js
// 테스트시 'node client.js URL-B' 명령으로 실행
exports.host = "127.0.0.1";
exports.port = 9090;
exports.method = "POST";
exports.path = "/url_b";
exports.headers = {"Content-Type": "application/json", "TEST": "TET"};
exports.body = JSON.stringify({
    data: "hello B"
});

[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"
}

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

[Guide | Web Service] 웹사이트 수집 설정 – Naver

운영중인 블로그나 사이트가 네이버에 수집되어 노출될 수 있도록 설정하는 방법을 정리한다.


작성일 : 2022-01-28

1> 네이버계정에 로그인

계정이 없다면 아래메뉴를 통해 생성하고 로그인한다.


2> Naver Search Advisor에 접속 & URL 등록

https://searchadvisor.naver.com/

웹마스터 도구 클릭

사이트 관리 > 사이트 등록 에서 프로토콜(http or https)을 포함해서 입력

① html 파일을 클릭하여 다운로드 받는다.
② 서버의 서비스폴더에 저장한다.
(https://{입력한 URL}/{html파일} 경로로 접근이 가능해야함)
③ 소유확인을 눌러 등록을 완료한다.


3> robots.txt 등록 – 수집될 내용에 대한 제한설정

User-agent:*
Allow:/

① 위와같이 robots.txt 파일을 생성한다.
② 서버의 서비스폴더에 저장한다.
(https://{입력한 URL}/ {robots.txt파일} 경로로 접근이 가능해야함)


4> sitemap.xml 등록 – 사이트 메뉴를 정리해 알려줌 (게시일 등을 설정할수 있음)

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
        <url>
                <loc>https://blog.opendocs.co.kr/</loc>
        </url>
        <url>
                <loc>https://blog.opendocs.co.kr/?cat=1</loc>
        </url>
        <url>
                <loc>https://blog.opendocs.co.kr/?cat=14</loc>
        </url>
        <url>
                <loc>https://blog.opendocs.co.kr/?cat=15</loc>
        </url>
        <url>
                <loc>https://blog.opendocs.co.kr/?cat=2</loc>
        </url>
        <url>
                <loc>https://blog.opendocs.co.kr/?cat=13</loc>
        </url>
</urlset>

① 위와같이 sitemap.xml 파일을 생성한다.
② 서버의 서비스폴더에 저장한다.
(https://{입력한 URL}/ {sitemap.xml파일} 경로로 접근이 가능해야함)
③ 웹마스터 도구 > 사이트 관리 > 요청 > 사이트맵 제출 메뉴에서 파일명을 입력하고 확인을 클릭한다.