■ Front-End ■/Node.js

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

한길(One Way) 2023. 2. 26. 06:23
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