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与处理程序的映射关系
- 将路由模块注入启动服务器的逻辑中
- 在路由模块中实现处理程序
通过以上步骤,我们就能够实现路由功能,并对客户端请求进行正确的处理。