首页 > 解决方案 > 没有从 api 调用收到请求正文

问题描述

这是我的 server.js -

const express = require("express");
const connectDB = require("./api/config/db");
const feedbackRouter = require("./api/routes/feedbackRouter");

const app = express();

const PORT = process.env.PORT || 5000;

connectDB();

app.use(feedbackRouter);

app.listen(PORT, () => {
  console.log(`SERVER IS LIVE AT ${PORT}`);
});

路由器(feedbackRouter.js)-

const express = require("express");
const router = express.Router();

router.post("/feedback", (req, res) => {
  const feedbackData = req.body;
  try {
    console.log(feedbackData);
    res.send(feedbackData);
  } catch (error) {
    res.status(400).send(error);
  }
});

module.exports = router;

当我从前端(React)或 Postman 进行 API 调用时,它req.body给了我 undefined 并且我在任何地方都看不到请求中的内容。

API 调用在 Postman 中给了我 200 的状态码。

知道这里可能有什么问题吗?提前致谢。

标签: node.jsapiexpressmern

解决方案


app.use(express.json())添加到您的代码中。

服务器.js:

const express = require("express");
const connectDB = require("./api/config/db");
const feedbackRouter = require("./api/routes/feedbackRouter");

const app = express();

const PORT = process.env.PORT || 5000;
app.use(express.json())

connectDB();

app.use(feedbackRouter);

app.listen(PORT, () => {
    console.log(`SERVER IS LIVE AT ${PORT}`);
});

关于 express.json() 方法及其选项:

https://expressjs.com/en/5x/api.html

您没有使用任何正文解析器,它们用于处理请求的正文,文档:

http://expressjs.com/en/resources/middleware/body-parser.html

邮递员请求和响应: 邮递员截图


推荐阅读