问题描述
我正在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代码
1楼
rainydaymatt
3
2019-02-20 22:36:07
因此,我没有完全实现bodyParser。
我在初始化主配置文件时设置了app.use(bodyParser.urlencoded({extended: true}))
,但没有设置app.use(bodyParser.json())
。