2011-08-13 125 views
2

我有一個明確的應用程序和POST路線:Node.js:如何在POST中傳遞參數?

app.post('/test', function(req, res){ 

//res.send(req.body.title + req.body.body) 
console.log(req.params); 
console.log(req.body); 
console.log(req.body.user); 
console.log(req.body.feedback); 
console.log("ok"); 
//return; 
}); 

我嘗試做〜$ curl -X POST "http://xxxx.herokuapp.com/test?user=hello",我也得到:

TypeError: Cannot read property 'user' of undefined 
    at Router.<anonymous> (/app/app.js:40:22) 
    at done (/app/node_modules/express/lib/router/index.js:250:22) 
    at middleware (/app/node_modules/express/lib/router/index.js:244:9) 
    at param (/app/node_modules/express/lib/router/index.js:227:11) 
    at pass (/app/node_modules/express/lib/router/index.js:232:6) 
    at Router._dispatch (/app/node_modules/express/lib/router/index.js:255:4) 
    at Object.handle (/app/node_modules/express/lib/router/index.js:45:10) 
    at next (/app/node_modules/express/node_modules/connect/lib/http.js:198:15) 
    at Object.methodOverride [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:35:5) 
    at next (/app/node_modules/express/node_modules/connect/lib/http.js:198:15)~ $ 

難道不應該崗位工作?

感謝

回答

4

不,你傳遞的參數是不是在後機身,但在查詢字符串。

the docs,訪問它,你必須做到:

req.query.user 
+0

它的工作,但現在我得到一個超時錯誤在服務器中。 – donald

+3

這是因爲你的服務器沒有響應,只是記錄的東西。你不需要做'res.send('hi');'或者什麼? –

1

不,因爲你要添加的參數傳遞給的網址是行不通的,(那你會爲一個GET做什麼)。對於需要的帖子:

curl -d "user=hello" http://xxxx.herokuapp.com/test 
1

不,捲曲調用是錯誤的。嘗試

curl -X POST "http://xxxx.herokuapp.com/test" -d user=hello 
4

選定的答案是錯誤的。很明顯,你需要來自請求體的東西(假設你說POST),而不是查詢字符串。你需要確保身體解析器是在你的中間件堆棧:

app.use(express.bodyParser()); 

一旦你這樣做,你可以使用req.body

(此外,正如其他人所說,你的捲髮是錯誤的爲好。你把東西在查詢字符串,而不是有請求體的。)

+0

捲曲效果很好,我選擇的解決方案也很好。 – donald

+0

如果我能更多地回答這個問題,我會的。這正是我所錯過的。謝謝@chjj。 – Crwth