Node.js库如何在特定的URLpath上注册HTTP请求?

我正在编写Node.js中的Web服务库。 我的库需要处理具有特定URL前缀的所有HTTP请求(例如,/ _docs / *)。

我希望人们能够在不改变他们的代码的情况下使用我的库。

API应该看起来像这样:

server = http.createServer(function(req, res) { ... }); ... myLibrary.listen(server, '_docs/'); 

要么

 server = new http.Server(); myLibrary.listen(server, '_docs/'); server.on('request', function(req, res) { ... }); 

如果我只是在服务器对象上注册另一个事件处理程序,那么用户的http请求处理程序也会在所有的HTTP请求中被调用。 我的代码将与用户的404处理程序竞争。

Socket.io有一个类似的问题, 他们通过使.listen()函数将所有现有的http请求处理程序移动到一个专用数组来解决它 。 当HTTP请求进来时,如果他们的代码不处理URL,它将调用数组中的侦听器。 但是,据我所知,这在我上面显示的第二个例子中是行不通的。

什么是最好的方式来做到这一点?

连接怎么样? 路由器中间件提供丰富的Sinatra / Express类路由。

 connect.router(function(app){ app.get('/user/:id', function(req, res, next){ // populates req.params.id }); app.put('/user/:id', function(req, res, next){ // populates req.params.id }); }) 

有关高级应用,请参阅http://expressjs.com/guide.html#routing