当前位置: 代码迷 >> JavaScript >> 通过fetch或axios访问时,使用bodyParser在Node / Express API中未定义的主体
  详细解决方案

通过fetch或axios访问时,使用bodyParser在Node / Express API中未定义的主体

热度:104   发布时间:2023-06-03 17:45:16.0

我正在React应用程序的Node / Express中调用API,无论我将fetch / axios调用放在哪里,我的解析主体在控制器中都显示为undefined。 昨天我花了很多时间来获取数据,但是今天尝试了axios进行更改,这是请求:

axios({
    method: 'post',
    url: 'http://localhost:3000/users/sign_in',
    data: {
        email: "matthewharp@gmail.com",
        password: "xxxxxxx"
    }
})
    .then(data => console.log(data))
    .catch(err => console.log(err));

现在,这是棘手的部分:Node控制器中的console.log()语句和查询文件会触发,因此路由没有问题,并且当我配置查询文件以简单地随机发送资源时,忽略了按主体字段进行搜索的预期逻辑,一切都会恢复正常。 但是,fetch和axios都会导致req.body及其任何属性的值undefined 例如,控制器中的此操作:

signIn(req, res, next) {
    let user = {
        email: req.body.email,
        password: req.body.password
    };
    console.log("1: " + Object.keys(req.body));
    console.log("2: " + req.body.email);
}

将在控制台中显示以下日志:

1: [object Object]
2: undefined

但是对有问题的对象的Object.keys()调用返回一个空字符串。

我正在使用bodyParser,但正如其他问题指出的那样,必须在任何路由声明之前进行初始化-我正在这样做(我已将配置抽象为main-config.js文件和route-config.js文件,并且main包含bodyParser并首先被初始化)。

非常感谢您的帮助,我们将很高兴提供更多信息和代码段。

编辑:API代码

因此,我没有完全实现bodyParser。 我在初始化主配置文件时设置了app.use(bodyParser.urlencoded({extended: true})) ,但没有设置app.use(bodyParser.json())

  相关解决方案