【问题标题】:Express POST request body is undefinedExpress POST 请求正文未定义
【发布时间】:2023-04-10 14:03:01
【问题描述】:

我一直在对一个非常简单的应用程序进行故障排除,但无法评估为什么 POST 的请求正文未定义。我使用了 express.json() 和 body-parser 并将请求的 Content-Type 更改为不同的格式,但没有得到任何回报。

这是与问题相关的后端代码

const morgan = require("morgan");
const { response } = require("express");
const { format } = require("morgan");
const express = require("express");
const app = express();
const cors = require("cors");

app.use(express.static("build"));
app.use(cors());
app.use(express.json());
app.use(morgan("combined"));

app.post("/api/phonebook/", (req, res) => {
  const body = req.body;
  console.log(req.body);
  console.log(body.content);
  if (!body.name) {
    return res.status(404).json({
      error: "no name",
    });
  }

  const personObj = {
    name: body.name,
    phone: body.phone,
    id: generateId(),
  };

  phonebook = phonebook.concat(personObj);
  response.json(personObj);
});

这是一个示例 POST

POST http://localhost:3000/api/phonebook/
Content-Type: application/json

{
    "name": "Bob",
    "phone": 123-456
}

服务器已启动并正在运行,并且执行 GET 和 DELETE 请求均有效。

【问题讨论】:

  • 改用 req.json()
  • req.json() 应该去哪里?我不明白你的建议

标签: javascript node.js express


【解决方案1】:
POST http://localhost:3000/api/phonebook/
Content-Type: application/json

{
    "name": "Bob",
    "phone": 123-456
}

在请求参数正文中,123-456 不是数字,所以它应该有“”为“123-456”。因为 123-456 类型为 null 所以参数未定义。服务端需要将搅拌后的数字解析为整数。

更新

回调函数中的响应参数应该正确使用。回调函数末尾的response.json 应编辑为res.json,作为定义的回调函数(res, req)

【讨论】:

  • 感谢您的回复。我将其更改为字符串,但请求正文仍未定义。
  • @TaylorDean 似乎 response.json(personObj); 应该是 res.json(personObj); 作为定义的回调函数 (res, req)。
  • @TaylorDean 如果有帮助请选择我的答案!
猜你喜欢
  • 2020-04-13
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 2020-12-02
  • 1970-01-01
  • 2016-02-05
相关资源
最近更新 更多