gpt4 book ai didi

javascript - Node.js 库如何在特定 URL 路径上注册 HTTP 请求?

转载 作者:行者123 更新时间:2023-11-30 13:34:35 24 4
gpt4 key购买 nike

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

我希望人们能够在不更改大部分代码的情况下使用我的库。

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 也有类似的问题,they solve it通过使他们的 .listen() 函数将所有现有的 http 请求处理程序移动到一个私有(private)数组中。当 HTTP 请求进入时,如果它们的代码不处理 URL,它会调用数组中的监听器。但是,据我所知,这在上面显示的第二个示例中是行不通的。

完成这项工作的最佳方法是什么?

最佳答案

Connect呢? ?路由器中间件提供了丰富的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 .

关于javascript - Node.js 库如何在特定 URL 路径上注册 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5416358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com