发布邮递员表单数据时请求正文为空

问题描述 投票:0回答:3

我花了一整天的时间试图找出这个问题的解决方案,但我没有。所以我向你寻求帮助。

我使用表单数据类型中的 POST 方法向邮递员发送了一个请求,并在 vscode 中控制台了 req.body,控制台显示了从邮递员发送的对象,它包含正确的数据,没有错误。

   router.post("/addPost/:id", async (req, res) => {
    try {
        console.log(req.body);
        res.send("success");
    } catch (error) {
        console.log(error);
    }
});

然后我重复相同的参数和相同的步骤,但使用 PUT 方法,并在 vscode 中控制台 req.body,但这里控制台显示 req.body 的空对象。

   router.put("/edit/:id", async (req, res) => {
try {
    console.log(req.body);
    res.send("success");
} catch (error) {
    console.log(error);
}});

module.exports = router;

main.js 文件

const express = require("express");
const mongoose = require("mongoose");
const app = express();
app.use(express.json());
const URI = process.env.URI;
mongoose
.connect(URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify: false,
})
.then(() => console.log("Connected to DB"))
.catch((error) => console.log(error));
app.use("/api/user", require("./routes/user/user"));
app.use("/api/admin", require("./routes/admin/admin"));
app.listen(5000, () => console.log(`server up and running`));

请帮助我。

node.js postman form-data
3个回答
0
投票

您正在使用默认情况下不支持的 put 请求,请将其设为 POST 请求并添加

_method => 'PUT'
以及您传递的数据


0
投票

我认为问题可能是您需要将 x-www-form-urlencoded 设置为邮递员的正文。


-1
投票

我认为这是因为表单数据不能很好地处理 PUT 请求。传统上,表单数据仅适用于 GET 和 POST 请求。 您可以采取变通办法,使其在 PUT 请求中工作。

  1. 添加 Content-Type 和 Content-Length 标头以指示存在请求正文。
  2. 使用 bodyParser 中间件。

当需要处理表单数据时,最好使用 POST 请求。

© www.soinside.com 2019 - 2024. All rights reserved.