0
我在Express中使用表單時遇到問題。如何使用Express從表單中獲取參數?
我的形式是非常直截了當:
<form action="/api/v1/items" method="post">
<p>
<span>Name:</span><br>
<input type="text" id="name">
</p>
<p>
<span>Priority:</span><br>
<input type="text" id="priority">
</p>
<p>
<span>Comment:</span><br>
<input type="text" id="comment">
</p>
<input type="submit" value="Add Item">
</form>
這裏是端點的服務器上執行:
const express = require('express');
const router = express.Router();
router.post('/', (req, res, next) => {
const data = {
'name': req.body.name,
'priority': parseInt(req.body.priority),
'comment': req.body.comment
};
// do something with the data
});
module.exports = router;
路線應正確註冊:
var app = express();
var items = require('./routes/items');
app.use('/api/v1/items', items);
問題是,當提交表單時,req.body
沒有參數。
我創建了使用快速產生,所以body-parser
中間件應正確設置我的應用程序:
var bodyParser = require('body-parser');
...
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
奇怪的是,如果我用curl
張貼數據,參數正確發送:
curl --data "name=Something&priority=1&comment=Whatever" http://127.0.0.1:3000/api/v1/items
由於curl的工作原理,這告訴我我的表單有些問題,儘管我不知道那裏可能會出現什麼問題。
我需要什麼,以獲得從表單提交的參數做才能在快速正確地分析?
你肯定bodyParser初始化路線之前去? –
@MykolaBorysyuk是 - bodyParser在路線註冊之前註冊。 – Andy