1. GET 요청

http://hellonodejs.co.kr?key1=value1&key2=value2…

주소 뒤에 ?을 붙인 뒤 키=값 형태로 요청사항을 덧붙인다.

예제(server_get.js)


var hp = require('http');

// 1. 요청한 url을 객체로 만들기 위해 url 모듈 사용
var url = require('url');
// 2. 요청한 url 중에 Query String 을 객체로 만들기 위해 querystring 모듈 사용
var querystring = require('querystring'); 

var server = hp.createServer(function(request,response){
    // 3. 콘솔화면에 로그 시작 부분을 출력
    console.log('--- log start ---');
    // 4. 브라우저에서 요청한 주소를 parsing 하여 객체화 후 출력
    var parsedUrl = url.parse(request.url);
    console.log(parsedUrl);
    // 5. 객체화된 url 중에 Query String 부분만 따로 객체화 후 출력
    var parsedQuery = querystring.parse(parsedUrl.query,'&','=');
    console.log(parsedQuery);
    // 6. 콘솔화면에 로그 종료 부분을 출력
    console.log('--- log end ---');

    response.writeHead(200, {'Content-Type':'text/html; charset=utf-8'});
    response.end('Hello, Node.js!');
});

server.listen(8080, function(){
    console.log('Server is running...');
		console.log('<http://localhost:8080?key1=newData&key2=2022&key3=test123>');
});

다음을 실행한 뒤, http://localhost:8080?key1=newData&key2=2022&key3=test123에 접속하고 로그 기록을 확인해보자.

로그가 총 2번 출력되었는데, 아래 로그는 favicon 표시를 위해 브라우저에서 한 번 더 요청하였기 때문에 나타난 현상이다. 따라서 위의 로그만 보자면,

<aside> 1️⃣ Url {protocol: null, slashes: null, auth: null, host: null, port: null, …}

</aside>

이 부분은 url.parse(request.url), 즉 브라우저에서 요청한 주소를 파싱(추출)한 값들이다.

마찬가지로,

<aside> 2️⃣ {key1: 'newData', key2: '2022', key3: 'test123'}

</aside>

이 부분은 querystring.parse(parsedUrl.query,'&','=')을 출력한 값이다.

이렇게 파싱한 데이터를 이용하여 요청값을 돌려줄 수 있다.