본문 바로가기

Node.js/[Node.js]

[Node.js] URL의 구조와 url모듈

URL의 구조

URL의 구조 (생활코딩 자료 참고)

URL이란 웹 사이트의 주소를 칭하는 말이다.

그럼 URL의 구조를 분석해보자.

  • protocol : 프로토콜(규약). 브라우저가 어떤 규약을 사용해야 하는지를 나타낸다. http, https 등이 있다.
  • host(domain) : 자원이 위치한 주소이다. 한마디로 어떤 웹 서버가 요구되는지를 가리키는 것이다. 직접 IP주소로 사용할 수 있으나 웹에서 주로 사용되지는 않는다.
  • port : 한 개의 컴퓨터 내에 여러대의 서버가 있다. 그 중에서 어떤 서버에 연결한지를 나타내는 것이다. 보통 포트번호 80은 생략한다.
  • path :  웹 서버 내에서 자원 경로를 구분하기 위하여 사용된다.
  • query string : 웹 서버에 제공하는 추가 파라미터이다. 이 파라미터는 & 기호로 구분된 key/value값으로 짝을 이룬 리스트이다.

 

 

URL 모듈

그렇다면 node.js에서 제공하는 모듈을 통해서 URL을 분석해보자.

모듈이란 필요한 것만 불러오는 것이라고 생각하면 된다.

 

Node.js 에는 다양한 모듈들이 있다.

그 중에서 오늘 소개할 모듈은 url모듈이다.

모듈을 사용하려면 우선 호출을 해야한다.

require 함수를 통해서 외부 모듈을 호출할 수 있다.

var url = require('url');

그리고 아래의 코드로 현재 요청된 주소를 _url이라는 변수에 대입할수 있다.

var _url = request.url;

 

 

 

parse 메소드

url 모듈의 parse 메소드는 url 문자열을 url 객체로 변환하여 리턴한다.

아래에서 실습을 해 보자.

var url = require('url');
var _url = request.url;
var urlObject = url.parse(_url, true);
console.log(urlObject);

//요청된 url 주소는 'http://localhost:3000/path/abc.php?id=student&page=12#hash' 이다.

==>실행 결과

Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'localhost:3000',
  port: '3000',
  hostname: 'localhost',
  hash: '#hash',
  search: '?id=student&page=12',
  query: [Object: null prototype] { id: 'student', page: '12' },
  pathname: '/path/abc.php',
  path: '/path/abc.php?id=student&page=12',
  href: 'http://localhost:3000/path/abc.php?id=student&page=12#hash'
}

위 처럼 parse 메소는 url 객체를 리턴한다!!

 

 

그렇다면 위의 주소에서 여러 값들을 console창에 출력해보자.

var url = require('url');
var urlObject=url.parse('http://localhost:3000/path/abc.php?id=student&page=12#hash',true);

console.log(urlObject.path);
console.log(urlObject.pathname);
console.log(urlObject.query);
console.log(urlObject.query.id);

==>실행 결과

/path/abc.php?id=student&page=12
/path/abc.php
[Object: null prototype] { id: 'student', page: '12' }
student

path값은 pathname값에다가 query string을 합친거라고 볼 수 있다.

 

 

 

 

URL을 통해서 입력된 값 사용

var http = require('http');
var fs = require('fs');
var app = http.createServer(function(request, response){
  var url = request.url;
  if(url == '/'){
    url = '/index.html';
  }
  if(url == '/favicon.ico'){
    return response.writeHead(404);
  }
  response.writeHead(200);
  response.end(fs.readFileSync(__dirname + url));
});

app.listen(3000);
http://localhost/?id=HTML

 

위의 query string의 id값을 바꿔주면서 동적인 웹 페이지를 생성할 수 있다.

그에대한 포스팅은 다음 글에서 이어서 할 계획이다.