nodejs http模块注册路由的实现

2020-03-21  本文已影响0人  周周周__

node的基本http库,是没有路由的功能的,基本测试get和post就不说了。实现注册路由的功能。
一、server.js

var http = require('http');
var url =require('url');  //url和http都是node.js模块
function start(route,handle) {  //route是路由模块,handler是注册的路由的字典
    function onRequest(request,response) {
        var pathname = url.parse(request.url).pathname;//pathname是请求的路径
        route(handle,pathname,request,response);  //将这些参数传递给route
    }
    http.createServer(onRequest).listen(80);
    console.log('server running at 80');
}
exports.start = start;

二、route.js

//路由文件
function route(handle,pathname,request,response) {
  if (typeof handle[pathname] ==='function') {   // 判断注册的路由字典对象中是否有这个函数
      return handle[pathname](request,response);
  }else{
      console.log('no request'+pathname);
      return 'NOT found';
  }
}
exports.route = route;

三、requestHandlers.js

//处理请求
function start(request,response) {
    console.log('do start');
    // return "start";
        response.writeHead(200,{'Content-Type':'text/plain'});
        response.write('start is running');
        response.end();
}
function upload(request,response) {
    console.log('do upload');
    response.writeHead(200,{'Content-Type':'text/plain'});
    response.write('upload is running');
    response.end();
}
exports.start = start;
exports.upload = upload;

四、index.js

var server = require('./server');
var router =require('./router');
var requestHandlers = require('./requestHandlers');

var handle = {};  // 创建一个空对象,下边是注册路由
handle['/start'] = requestHandlers.start,
handle['/upload'] = requestHandlers.upload;

server.start(router.route,handle); //启动server,同时将路由模块和上边注册的路由对象传进去

上一篇 下一篇

猜你喜欢

热点阅读