Node.js:连接路由器中间件

Node.js : Connect router middleware

本文关键字:路由器 中间件 连接 js Node      更新时间:2023-09-26

我正在尝试使用Connect for Node.js,但在让路由器中间件完全按照我的意愿运行时遇到了问题。

具体来说,我希望能够用URL的搜索项部分填充req.params对象,例如

http://www.google.com/search?q=Search

将返回req.params = { "q" : "Search" }

我更喜欢一个设置,在那里我可以做一些类似的事情:

router.get('/user?:userid&:fullname&:emailaddress', function(req, res) {...

以便我可以访问检查每个搜索项的访问,然后相应地做出响应。

在Connect中有办法做到这一点吗?

这并不是使用Connect解决问题的真正答案。但我认为您应该使用Express(由同一作者TJ撰写),它在封面下使用Connect,但功能要强大得多。

Sinatra启发的网络开发node.js框架——疯狂快速、灵活、性感的

当使用Express时,实现这一点非常容易,如app.js:所示

var express = require('express'),
        app         = express.createServer();
app.get('/search', function (req, res) {
    res.send(req.query);
});
app.listen(3111);

alfred@alfred-laptop:~/node/so/6513101$ curl -v "http://localhost:3111/search?q=a&y=b"
* About to connect() to localhost port 3111 (#0)
*   Trying ::1... Connection refused
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 3111 (#0)
> GET /search?q=a&y=b HTTP/1.1
> User-Agent: curl/7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: localhost:3111
> Accept: */*
> 
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Type: application/json; charset=utf-8
< Content-Length: 17
< Connection: keep-alive
< 
* Connection #0 to host localhost left intact
* Closing connection #0
{"q":"a","y":"b"}