我尝试向后端发送一个axios
请求,但最终得到一个空的body
,我不明白为什么会这样。
axios.post('/register', {email: email, password: password, username: username, company: company}).then(response => {
console.log(response.data);
});
这是后端的代码:
authRouter.post('/register', (request, response) => {
console.log(request.body);
});
并且这个输出一个空的request.body
,我也检查了发送的JSON
,它一点也不空,有没有办法在发送之前看到请求的形式是什么?这个authRouter
是一个module.export
,它被主app
模块使用,这个app
模块有这样的配置:
app.use(express.static("public"));
app.use(session({ secret: "shh", resave: false, saveUninitialized: false }));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(passport.initialize());
app.use(passport.session());
app.set('views', __dirname + '/views');
app.set('view engine', 'pug');
app.use(authRouter);
https.createServer({key: fs.readFileSync('ssl/key.pem'), cert: fs.readFileSync('ssl/cert.pem')}, app).listen(8080);
7条答案
按热度按时间kuuvgm7e1#
问题来自
body-parser
需要一个x-www-form-urlencoded
请求,而我没有提供一个。我已经将axios请求的头文件设置为它,代码如下所示:
euoag5mw2#
在我例子中,我声明了“Content-Type”:“application / json”在axios头文件中。为方便起见,我在axios的全局属性中声明。
这样
现在它的作品
3zwtqj6y3#
为了解决我的问题,我不得不这样做
更多信息
j9per5c44#
可以使用qs序列化有效负载。
安装:
npm i qs
希望这对你有帮助
jk9hmnmh5#
我刚才已经堆栈了相同的问题,我的例子中的问题是在transformRequest函数中:它返回数据时不使用JSON。将其字符串化。这就是transformRequest函数的外观(在我的示例中使用TypeScript记录器):
最后我的post static方法是这样的:
tyg4sfes6#
这是我最终得到的代码版本,没有使用qs.stringify()会导致输出如下:
{ '{"username":"shelly","password":"hell"}': '' }
,这是不可取的。另一件事是,您可以使用“postman”来生成code我希望这会有所帮助,我是stackoverflow的新手,所以如果有任何错误请忽略
8wtpewkr7#
在我的例子中,问题是我的nodeJS服务器需要使用express.json()中间件解析传入的JSON有效负载。我将以下代码放在主
index.js
文件中:app.use(express.json());
它修复了它。