[英]req.body not working on express router post requests
来自 React 前端的 Post 请求。 但是,当我尝试在 express 路由器下设置的 post 请求中访问 req.body 时,它会简单地记录为 [object Object]。 初学者程序员的任何帮助非常感谢!
我正在尝试学习如何在 express.js 应用程序中模块化我的路由,但我无法在 POST 请求中访问 req.body。 我花了几个小时试图找到一个没有成功的解决方案。
我 100% 已经安装了 body-parser。
我的 server.js 文件:
const express = require('express');
const app = express();
const router = express.Router();
const PORT = process.env.PORT || 4000;
const cors = require('cors');
const bcrypt = require('bcryptjs');
const passport = require('passport');
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json()); //And so on.
app.use(cors());
// ROUTES - Require Routes defined in directory
const productsRoutes = require('./routes/products')
// ROUTES - use routes defined in directory
app.use('/products', productsRoutes);
app.listen(PORT, () => {
console.log(`listening on PORT ${PORT}`);
})
路线/产品页面:
const express = require('express');
const router = express.Router();
// const bodyParser = require('body-parser')
router.get('/', ( req, res ) => {
res.status(200).json({message: 'Connected to the products!' });
})
router.post('/', ( req, res ) => {
console.log(`req.body ${req.body}`);
res.status(200).json({message: 'Connected products products!' });
})
module.exports = router;
反应前端:
componentDidMount(){
axios.post('http://localhost:4000/products', {
headers: {searchText: this.state.searchText}
})
.then( res => {
console.log('GOT PRODUCTS', res.data);
this.setState({ products: res.data})
})
.then(json => {
this.setState({ loading: true });
setTimeout(() => {
this.setState({ done: true });
}, 1000);
});
}, 1200);
}
如果有人知道我如何在 router.post('/---') 请求中访问 req.body,我将不胜感激
它简单地记录为 [object Object] ...
如果您尝试将对象连接到字符串,则会发生以下情况:
console.log("you see: " + {});
那是因为{}.toString()
返回字符串"[Object object]"
。 虽然那不是很有用。 相反,您可以自行将对象传递给console.log
,这样它就会显示得更优雅:
console.log("result :", { it: "works" });
(如果您连接调试器,您甚至可以与之交互)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.