在Express中,使用body-parser中间件可以解析HTTP请求中的body部分。但是,如果body-parser没有正确配置,则可能会导致req.body请求未定义的问题。
以下是使用body-parser处理POST请求中的表单数据并返回JSON响应的示例代码:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.post('/login', (req, res) => {
const { username, password } = req.body;
if (username === 'admin' && password === 'password') {
res.json({ success: true });
} else {
res.status(401).json({ error: 'Invalid credentials' });
}
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
在上面的示例中,我们使用了body-parser中间件来解析POST请求中的表单数据。我们区分了extended的值来处理不同的类型数据,特别是multipart/form-data、application/x-www-form-urlencoded。如果req.body请求未定义,则意味着body-parser没有成功解析请求的body内容。您可以按照上面所写的做法进行调试,并检查是否正确使用了body-parser中间件。如果还有其它问题,请确保正确地使用请求和响应对象,以及正确处理错误。