2011-06-28 43 views
3

我想爲Node.js使用Connect,但遇到了讓路由器中間件完全按照我想要的方式執行的問題。Node.js:連接路由器中間件

具體來說,我希望能夠填補req.params用URL的搜索詞部分對象,例如

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

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

我寧願有一個設置,在那裏我可以做這樣的事情:

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

以便我可以訪問檢查每個搜索項的訪問權限,然後進行相應的響應。

有沒有辦法在Connect中做到這一點?

回答

4

這不是真正的答案,將解決您的問題使用連接。但我認爲你應該使用Express(由同一作者TJ),它使用Connect在封面下,但方式更強大。

特拉啓發web開發 框架node.js的 - 瘋狂 快速,靈活,和性感

當使用快速實現這一目標是很容易如圖所示與app.js:

var express = require('express'), 
     app   = express.createServer(); 

app.get('/search', function (req, res) { 
    res.send(req.query); 
}); 

app.listen(3111); 

[email protected]:~/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"} 
+0

出於某種原因,它不是在爲我工作一個瀏覽器。我只是做了完全相同的事情,但在80端口,它迴應「無法得到等等等等等等」。從頭開始,我是個白癡。 –

+0

http:// localhost/search?q = a&y = b應該可以工作。你需要指定/ search部分。 – Alfred

+4

此答案不回答關於如何使用連接執行此操作的問題。 – Tom