본문 바로가기
  • 실행력이 모든걸 결정한다
Node.js/Node.js Basic

[Node.js] URL의 query string 추출 (GET방식)

by 김코더 김주역 2020. 10. 5.
반응형

URL 구성요소

ex) http://localhost:3000/?name=kimcoder&age=23
  • http : protocol, 통신규약
  • localhost : host(domain)
  • :3000 : 포트넘버, 생략시 80번
  • ?name=kimcoder&age=23 : query string, 서버에 전달되는 데이터이다. '?'으로 시작하며 '&'를 경계로 변수명=값 형태로 들어오게 되는데, 이 쿼리 스트링은 name,age 라는 2개의 변수가 각각 kimcoder, 23이라는 값을 가지고 온 것이다.

 

var http = require('http');
var fs = require('fs');
var url = require('url');
var app = http.createServer(function(request,response){
    var _url = request.url;
    console.log(url);
    console.log(_url);
    var queryData = url.parse(_url,true).query;
    console.log(queryData);
    console.log(queryData.name);
    /*if(_url == '/'){
      _url = '/index.html';
    }
    if(_url == '/favicon.ico'){
      response.writeHead(404); //파일을 찾을 수 없을 때
      response.end();
      return;
    } */
    response.writeHead(200); //파일을 찾았을 때
    response.end("Hello!!!");
});
app.listen(3000);

여기서 중요한 것은 서버 측으로 들어온 query string의 데이터들을 추출하는 방법이다.

require 함수는 외부 모듈을 가져오게 해주고, createServer 함수는 웹 객체를 생성해준다.

위에 복잡하게 나와있는 cmd 내용들은 아래 소스코드의 url, _url, queryData, queryData.name 이 각각 어떤 값을 가지는지 알아보기 위해 명령프롬포트에 출력시켜본 것이다.  

 

_url(request.url) 에는 query string 정보가,

queryData에는 변수명:값 쌍들로 이루어진 객체가,

queryData.name 에는 queryData의 name값이 온다.

 

(queryData 부가 설명)

url.parse(_url,true).query : query string을 매개변수로 받고 url 외부 모듈에 대해 파싱함으로써, 변수명:값 쌍들로 이루어진 객체를 반환해주는 역할을 한다. url객체에서 query라는 이름의 key가 있고 이 value값이 반환할 객체이다.

 

cmd의 마지막줄에 출력된 'kimcoder' 이 queryData.name에 해당 하는 값이다.

이로써, 서버측으로 들어온 query string의 변수 값 추출에 성공하였다.

반응형

댓글