将发布数据提取到expressjs导致找不到404服务器

时间:2019-05-31 12:06:35

标签: javascript node.js reactjs express

具有一个与我自己的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()
      })

2 个答案:

答案 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