Axios 发布空请求

新手上路,请多包涵

我正在尝试向后端发送一个 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);

原文由 Justplayit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 396
2 个回答

问题来自 body-parser 想要一个 x-www-form-urlencoded 请求,而我没有提供一个。

我已经为它设置了 axios 请求的标头,代码如下所示:

 axios.post('/register', {
  email: email,
  password: password,
  username: username,
  company: company
}, {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})
  .then(response => {
    console.log(response.data);
  });

原文由 Justplayit 发布,翻译遵循 CC BY-SA 4.0 许可协议

为了解决我的问题,我基本上只能这样做

let config = {
               headers: {
                  'Content-Type': 'application/x-www-form-urlencoded',
               }
          }

let params = new UrlSearchParam();
    params.append('var1', 'val1');
    params.append('var2', 'val2');

//Finally

axios.post('gotourl', params, config).then( ( response ) => {
      console.log(response.data);
});

更多资讯

原文由 Goms 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题