具有一个与我自己的expressjs api后端相对应的前端。 Express v。4.16.0
在react前端上使用fetch来获取数据就可以了。
fetch('/desResData')
.then(res => {....}
当我尝试通过请求发布一些数据时,我得到:“ POST http://localhost:3000/desResData 404(未找到)” 代码:
fetch('/desResData',
{
method: 'POST',
body: { product: "test" }, // tried JSON.stringify as well
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
}
)
.then(res => {....}
粗略地说,我可以从前端到后端进行静态通信,但无法参数化我的请求。
ExpressJS:
router.get('/', async function (req, res, next) {
console.log(req.body) // tried with using req and without using it
findByProduct("product") // some async db operation // this part is working fine while fetching without any post parameters
.then(data => {
res.json()
})
答案 0 :(得分:1)
您必须编写trash
(而不是router.post
)来处理HTTP POST请求。
请注意,提取的方法为router.get
。但是您编写了POST
来处理请求,该请求的方法为router.get
。
如果对不存在的路由发出POST请求,则express将给出404。即使同一路由有GET处理程序,该请求也适用。
(提示:通过使用GET
,.get
,.post
,.put
,您可以为同一路由使用单独的GET,POST,PUT,DELETE等处理程序。等)
答案 1 :(得分:0)
将此添加到您的服务器代码中:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, HEAD');
next();
});
您的反应代码的package.json内部:
"proxy": "http://localhost:serverport", <-- server port will be port of your node-express server