Аксиос отправляет пустой запрос - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь отправить запрос 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);

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

в моем случае я объявляю «Content-Type»: «application / json» в заголовках axios. Для простоты я объявляю в глобальном атрибуте axios.

таким образом

axios.defaults.headers.common = {
  "Content-Type": "application/json"
}

Теперь его работы

0 голосов
/ 18 июня 2019

Чтобы решить мою проблему, я был вынужден сделать это по существу

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);
});

Больше информации

0 голосов
/ 03 июля 2018

Проблема возникла из-за того, что 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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...