Hello World 基本路由

了解了如何使用节点创建 HTTP 服务器之后 ,了解如何根据用户导航到的路径执行操作非常重要。这种现象称为路由

最基本的例子是检查 if (request.url === 'some/path/here'),然后调用一个用新文件响应的函数。

这方面的一个例子可以在这里看到:

const http = require('http');

function index (request, response) {
    response.writeHead(200);
    response.end('Hello, World!');
}

http.createServer(function (request, response) {
    
    if (request.url === '/') {
        return index(request, response);
    }

    response.writeHead(404);
    response.end(http.STATUS_CODES[404]);

}).listen(1337);

但是,如果你继续定义这样的路线,你最终会得到一个巨大的回调函数,我们不希望像这样的巨大混乱,所以让我们看看我们是否可以清理它。

首先,让我们将所有路由存储在一个对象中:

var routes = {
    '/': function index (request, response) {
        response.writeHead(200);
        response.end('Hello, World!');
    },
    '/foo': function foo (request, response) {
        response.writeHead(200);
        response.end('You are now viewing "foo"');
    }
}

现在我们已经在一个对象中存储了 2 个路由,现在我们可以在主回调中检查它们:

http.createServer(function (request, response) {
    
    if (request.url in routes) {
        return routes[request.url](request, response);
    }

    response.writeHead(404);
    response.end(http.STATUS_CODES[404]);

}).listen(1337);

现在,每次尝试浏览网站时,都会检查路径中是否存在该路径,并调用相应的功能。如果未找到路由,则服务器将以 404(未找到)进行响应。

而且你有它 - 使用 HTTP Server API 进行路由非常简单。