http://hellonodejs.co.kr?key1=value1&key2=value2…
주소 뒤에 ?을 붙인 뒤 키=값 형태로 요청사항을 덧붙인다.
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,'&','=')을 출력한 값이다.
이렇게 파싱한 데이터를 이용하여 요청값을 돌려줄 수 있다.