Today Yewon Learned

[Node.js] 라우팅(Routing) 본문

javascript/Node.js

[Node.js] 라우팅(Routing)

데브워니 2021. 12. 8. 08:00
const http = require('http');

let server = http.createServer(function(request, response) {
response.end('<h1>Hello world</h1>');
});

server.listen(3000);

이와 같이 Node.js 에서 간단한 서버 프로그램 실행 후,

주소창에 127.0.0.1:3000 으로 접속시, Hello World가 출력되는 것을 확인하였다.

그럼, 주소를 127.0.0.1:3000/users 로 바꿔보자.

똑같은 결과다.

다시 한번, 주소를 127.0.0.1:3000/codeit/item?id=3으로 바꿔보자.

여전히 똑같은 결과로, 이 상태로는 제대로 된 서버 프로그램을 만들기 힘들 것이다.

그러면 어떻게? URL에 따라 알맞는 응답을 주도록 해야한다.

 

 

request.url 이용

const http = require('http');

let server = http.createServer(function(request, response) {
console.log(request.url);//클라이언트가 요청한 URL 정보 알기 - request 속성에 URL 정보 담겨옴 
});

server.listen(3000);

주소창에 127.0.0.1/3000/programming/topics를 치면,

Node.js 의 teminal 창에서 입력한 주소 결과를 알 수 있다.

 

 

각각 URL에 따라 다른 라우팅 해보기

const http =  require("http");

users = ['Tom', 'Andy', 'Jessica', 'Paul'];

let server = http.createServer(function (request, response){

    if(request.url === '/'){ //호스트 부분만 남겨도 '/' 자동으로 붙여줌 (중요) - main 페이지 url
        response.end('<h1>Welcome!<h1>');
    }else if(request.url === '/users'){ //회원목록 요청 url
        response.end('<h1>' + users + '</h1>');
    }else{ //준비되지 않은 url
        response.end('<h1>Page Not Available</h1>');
    }

});

server.listen(3000);

 

 

HTTP 모듈로 라우팅 할 때의 불편함

const http =  require("http");
const { REPL_MODE_STRICT } = require("repl");

users = ['Tom', 'Andy', 'Jessica', 'Paul'];

let server = http.createServer(function (request, response){

   if(request.url === '/'){
       response.end('<h1>Welcome!</h1>');
   }else if(request.url === '/users'){
       response.end('<h1>' + users + '</h1>');
   }else if(request.url.split('/')[1] === 'users'){
       //url : /users/1, /users/2, ...
    let userIdx = request.url.split('/')[2];
    let userName = users[userIdx -1];

    response.end('<h1>' + userName + '</h1>');
    }else{
        response.end('<h1>Page Not Available</h1>');
    }

});

server.listen(3000);

*split() - 문자열을 배열로 변환하는 메소드

EX) REPL모드 접근

결과)

'javascript > Node.js' 카테고리의 다른 글

[Node.js] 서드파티 모듈  (0) 2021.12.15
[Node.js] express 모듈을 이용한 라우팅  (0) 2021.12.15
[Node.js] URL , Domain Name  (0) 2021.12.07
[Node.js] 초간단 웹 서버 제작  (0) 2021.12.07
[Node.js] 서버와 클라이언트  (0) 2021.12.04
Comments