【问题标题】:req.body is NULL {} on POST requestreq.body 在 POST 请求中为 NULL {}
【发布时间】:2021-05-17 12:22:52
【问题描述】:

根据 POSTMAN 的 post 请求,req.body 正在发送数据,但在提交表单时返回 { }。

这是我用作中间件的,

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: false}));

但是bodyParser这个词被标记为'bodyparser is deprecated'.ts(6385), 该声明在此处被标记为已弃用。

我试过用,

app.use(express.json());

app.use(express.urlencoded({ extended: false}));

但它仍然在 req.body 上返回 { }

【问题讨论】:

    标签: javascript json express body-parser


    【解决方案1】:

    您确定在发送 POST 请求时使用了正确的标头吗?

    对于.json() 解析,您的标头应包含:Content-Type: application/json

    对于urlencoded() 表单数据解析,您的标题应包含:Content-Type: application/x-www-form-urlencoded

    您还可以分享您的 Postman 请求的 CURL 吗?

    【讨论】:

    • 是的,标题包含 Content-Type 为:application/x-www-form-urlencoded,在正文中我发送键和值并在控制台中获取结果。但只要我填写表格并提交它就会返回“{}”,其中对象 ID 保存在数据库中,
    【解决方案2】:

    注册依赖的时候看代码行,如果注册express json,那应该在你的路由之前,所以它看起来像:

    const express = require('express');
    const app = express();
    
    // middleware registered here
    app.use(express.json());
    
    // then your route
    app.post('/someroute', async (req,res,next) => {
      const { param1, param2 } = req.body;
      try {
        console.log(`${param1} and ${param2} written in terminal);
        res.send('ok');
      } catch (err) {
        res.send('oopps');
      }
    })
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 2012-08-15
      • 2021-03-28
      相关资源
      最近更新 更多