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값을 바꿔주면서 동적인 웹 페이지를 생성할 수 있다.
그에대한 포스팅은 다음 글에서 이어서 할 계획이다.
'Node.js > [Node.js]' 카테고리의 다른 글
[Node.js] 쿠키와 세션 (0) | 2021.04.10 |
---|---|
[Node.js] 서버 만들기 & fs모듈을 promise 형식으로 활용 (0) | 2021.03.09 |
[Node.js] fs.readFile (파일 읽기) / fs.readdir(파일 목록 가져오기) (0) | 2021.02.11 |