javascript - POST 请求未填充正文

标签 javascript express

我在从客户端向服务器端发送信息时遇到问题。

在我的应用程序中,我有一个要提交到我的服务器的表单。因为我使用 lib 从 json 架构文件自动生成表单,所以我必须手动提交表单,基本上是使用我的对象发出 post 请求。到目前为止一切顺利,但是我的请求到达后端时主体为空。

客户发帖请求:

const test = {
    name: "hello"
}
axios.post("http://localhost:8000/my-route/test", test)
    .then(res => console.log("res.data", res.data));

服务器路由定义

app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static("public"));
app.use(cors());

/* ... */

app.post("/my-route/:type", (req, res) => {
    if (!req.params.type) {
        res.send({
            err: "Please provide type"
        });
    } else {
        console.log('req.body', req.body);

        res.send({
            sucess: "Generating type " + req.params.type
        });
    }
});

我在后端的日志生成 req.body {} 而不是 req.body { name: "hello"}

如果我决定 JSON.stringify(test),那么我的日志将变为 req.body { '{"name":"hello"}': '' },这并不是我真正想要的。

最佳答案

axios 请求正在发送 JSON 有效负载。但是,您的服务器不解析 JSON;它只解析 URL 编码的主体。您需要添加此中间件:

app.use(bodyParser.json());

因为您没有该解析器,所以您的 bodyParser.urlencoded(...) 中间件仅使用空对象填充 req.body

关于javascript - POST 请求未填充正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701805/

相关文章:

javascript - ajax 发送 POST 两次,从 PHP 接收双重/重复结果

javascript - React Router - 呈现 <Redirect> 而不是子列表组件

javascript - 方向错误的照片

javascript - x.x 不是构造函数

image - 如何使用 node.js 和 express 上传、显示和保存图片

javascript - 隐藏/显示按钮在 jquery 中不起作用

express - 从triggerio上传图像到express.js失败

向我的 Node 服务器发送 AJAX 请求 - 未通过

javascript - Node : Middleware for only page loading

javascript - 如何使用 mongoose 保存嵌套的 mongoDB 属性?