//다른 HTTP 요청이 코드의
//다른 부분을 가리키도록 하는 것을 “라우팅(routing)”

// 요청 url get/pos 파라미터를 router로 전달
// 웹서버로 요청보내는 형식
// http://localhost:8888/start?foo=bar&hello=world

// URL path 기준으로 요청 구분하기

var http = require("http");
var url = require("url");

function start() {
function onRequest( request, response ) {
var pathname = url.parse(request.url).pathname;
console.log("Request"+pathname+" received");
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("HelloWorld");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("server has started");
}
exports.start = start;

// router 만들기
// node index.js(서버 실행) -> url 요청 -> http server가 router를 사용하여 pathname을 넘김
router.js
function route(pathname) {
  console.log("About to route a request for " + pathname);
}
exports.route = route;

index.js
var server = require("./server");
var router = require("./router");
server.start(router.route);

server.js
var http = require("http");
var url = require("url");

function start(route) {
function onRequest( request, response ) {
var pathname = url.parse(request.url).pathname;
console.log("Request"+pathname+" received");
route(pathname);
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("HelloWorld");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("server has started");
}
exports.start = start;

// request handler로 라우팅(routing) 하기
request_handler.js
function start() {
console.log("Request handler 'start' was called");
}
function upload() {
console.log("Request handler 'upload' was called");
}

exports.start = start;
exports.upload = upload;

router.js
function route(pathname, handle) {
console.log("About to route a request for "+pathname);
if ( typeof handle[pathname] === 'function' ) {
handle[pathname]();
}
else{
console.log("No request handler founder for " + pathname );
}
}
exports.route = route; // exports 외부에서 호출가능하게함


server.js
var http = require("http");
var url = require("url");

function start(route, handle) {
function onRequest( request, response ) {
var pathname = url.parse(request.url).pathname;
console.log("Request"+pathname+" received");
route( pathname, handle);
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("HelloWorld");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("server has started");
}
exports.start = start;

index.js

var server = require("./server");
var router = require("./router");
var requestHandlers = require("./request_handler");
var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
server.start(router.route, handle);

Posted by 에브리피플
,