■ Front-End ■/Node.js

[Node.js] http 모듈 - 요청 URL에 따른 다양한 서비스

한길(One Way) 2023. 2. 26.
Node.js는 빠르고 쉬우며 확장 가능한 JavaScript 런타임이다.

 

1. 개요

Node.js에서 http 모듈로 웹으로 요청 URL에 따른 다양한 서비스를 분기하는 예제이다.

2. 사용법

먼저 http 모듈과 fs 모듈을 선언한다.

var http = require('http'); 
var fs = require('fs');

요청URL 에 대한 각각의 request.url에 대해서 if ~ else ~ 문으로 분기를 하여 처리한다.

if (request.url == "/")
{
        response.writeHead(200, { 'Content-Type' : 'text/html; charset=utf-8' });
        …(중략)…
}
else if (request.url == "/about")
{
        response.writeHead(200, { 'Content-Type' : 'text/html; charset=utf-8' });
        …(중략)…
}
else if (request.url == "/image")
{
        …(중략)…
}
else if (request.url == "/song")
{
        …(중략)…
}
else if (request.url == "/moive")
{
        …(중략)…
}
else if (request.url == "/down")
{
        …(중략)…
}
else
{
        response.end("<h1>404 error<br> File not found</h1>");
}
 

 

3. 예제

아래는 전체 코드이다.

/** request */
 
var http = require('http');
var fs = require('fs');
 
http.createServer(function(request, response) {
 
    if (request.url == "/")
    {
         response.writeHead(200, { 'Content-Type' : 'text/html' });
         response.write("<h1>Main page</h1>");
         response.write('<hr>');
         response.write('<footer style="text-align: center;">');
         response.write('    <a href="http://blog.naver.com/agapeuni">" target="_blank" class="con_link">">">http://blog.naver.com/agapeuni</a>');
         response.write('</footer>');             
         response.end();        
    }
    else if (request.url == "/about")
    {
         response.writeHead(200, { 'Content-Type' : 'text/html; charset=utf-8' });
         response.write("<h1>About page</h1>");
         response.write('<hr>');
         response.write('<footer style="text-align: center;">');
         response.write('    <a href="http://blog.naver.com/agapeuni">" target="_blank" class="con_link">">">http://blog.naver.com/agapeuni</a>');
         response.write('</footer>');             
         response.end();            
    }
    else if (request.url == "/image")
    {
         fs.readFile('image.jpg', function(err, data) {
             response.writeHead(200, { 'Content-Type' : 'image/jpeg' });
             response.write(data);
             response.end();
         });
    }
    else if (request.url == "/song")
    {
         fs.readFile('song.mp3', function(err, data) {
             response.writeHead(200, { 'Content-Type' : 'audio/mpeg' });
             response.write(data);
             response.end();
         });
    }
    else if (request.url == "/moive")
    {
         fs.readFile('movie.mp4', function(err, data) {
             response.writeHead(200, { 'Content-Type' : 'video/mp4' });
             response.write(data);
             response.end();
         });
    }
    else if (request.url == "/down")
    {
         fs.readFile('movie.mp4', function(err, data) {
             response.writeHead(200, { 'Content-Type' : 'video/mp4', 'Content-Disposition' : 'attachment;filename=movie.mp4' });
             response.write(data);
             response.end();
         });
    }
    else
    {
         response.end("<h1>404 error<br> File not found</h1>");
    }
}).listen(1337, '127.0.0.1');
 
console.log('http://127.0.0.1:1337/');
 

실행 결과

브라우저에서 http://127.0.0.1:1337 요청 시 표시되는 첫 화면이다.

 

http://127.0.0.1:1337/about 요청 시 표시되는 화면이다.

 

http://127.0.0.1:1337/image 요청 시 표시되는 화면이다.

http://127.0.0.1:1337/song 요청 시 표시되는 화면이다.

 

http://127.0.0.1:1337/movie 요청 시 표시되는 화면이다.

크롬과 IE에서 동영상이 바로 재생이 안되어서 파이어폭스에서 표시하였다.

http://127.0.0.1:1337/down 요청을 하면 파일을 다운로드한다.

http://127.0.0.1:1337/none 와 같이 정의되지 않은 URL 요청을 하면 아래와 같이 표시된다.

 
728x90

댓글