Node.js 路由


Node.js 路由

路由是指确定请求的URL,将请求的URL与处理请求的代码之间建立起映射关系。Node.js中可以使用路由来处理客户端请求,使得客户端请求能够被正确的处理并返回相应结果。

路由实现

下面示例代码中,我们从URL中提取请求的路径,对该路径进行分类处理:

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

function start(route) {
  function onRequest(request, response) {
    var pathname = url.parse(request.url).pathname;
    route(pathname);
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.write('Hello World');
    response.end();
  }

  http.createServer(onRequest).listen(8888);
  console.log('Server has started.');
}

exports.start = start;

路由函数

路由模块必须为路由函数提供请求与对应处理程序之间的映射,这样才能将请求路由到处理程序:

function route(pathname) {
  console.log('About to route a request for ' + pathname);
}

exports.route = route;

路由模块

我们还需要将路由函数注入到服务器启动的逻辑中,可以编写一个路由模块,将路由逻辑封装到模块中,方便重用。

我们可以新建一个router.js文件,代码如下:

function route(pathname) {
  console.log('About to route a request for ' + pathname);
}

exports.route = route;

可以将路由模块作为参数传递给服务启动函数,代码如下:

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

server.start(router.route);

这样我们就可以完成路由功能的实现了。

路由处理

具体的路由处理代码需要我们在路由模块中实现,例如请求路径为’/hello’时,我们可以将请求路由到一个处理该请求的处理程序中:

function route(pathname) {
  console.log('About to route a request for ' + pathname);
  if (pathname === '/hello') {
    console.log('Hello World');
  } else {
    console.log('404 Not Found');
  }
}

exports.route = route;

这样,当客户端请求路径为’/hello’时,我们就能够正确地处理该请求并返回响应结果。

总结

在Node.js中实现路由需要完成以下几个步骤:

  • 确定请求的URL
  • 建立请求URL与处理程序的映射关系
  • 将路由模块注入启动服务器的逻辑中
  • 在路由模块中实现处理程序

通过以上步骤,我们就能够实现路由功能,并对客户端请求进行正确的处理。