leo*_*ero 1 http node.js server
我创建了以下 Nodejs 服务器:
var http = require('http');
var serverFunction = function(req, res) {
if (req.url === '/') {
//does something
}
}
http.createServer(serverFunction).listen(3000);
Run Code Online (Sandbox Code Playgroud)
现在我想添加另一个路径(例如:/hello),但我不想更改serverFunction。
我怎样才能做到这一点?
简单的http服务器(无框架)方法如下。
但是,创建多个独立请求处理程序的更高级别方法是使用像Express. 虽然从技术上来说不需要做你所要求的事情,但 Express 的构建就是为了让这样的任务变得简单。
具有多个路由处理程序的简单 Express 服务器如下所示:
var express = require('express');
var app = express();
app.get('/', function(req, res) {
// handle the / route here
});
app.get('/hello', function(req, res) {
// handle the /hello route here
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
Express 框架的构建允许您简单地添加路由,如上所示。它还包括许多很多功能,例如中间件处理和访问许多预构建的中间件模块,例如 cookie 处理、会话处理、帖子处理等......
严格回答您原来的问题(尽管我认为这不是添加更多路由处理程序的最简单方法),如果您想使用纯 http 模块而不将第二条路由添加到现有侦听器,您可以侦听服务器上的request事件。
var http = require('http');
var serverFunction = function(req, res) {
if (req.url === '/') {
//does something
}
}
var server = http.createServer(serverFunction).listen(3000);
server.on('request', function(req, res) {
// see all incoming requests here
if (req.url === '/hello') {
// process /hello route here
}
});
Run Code Online (Sandbox Code Playgroud)
事实上,如果您仔细阅读 http 服务器文档,您会发现您serverFunction只不过是事件的自动注册侦听器request,并且与事件样式接口一样,如果您选择,您可以为该事件创建更多侦听器。
| 归档时间: |
|
| 查看次数: |
3555 次 |
| 最近记录: |