данные тела не отправлены в запросе axios - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь отправить данные через запрос axios в мой серверный скрипт, но тело выглядит пустым.

Вот запрос, отправленный с внешнего интерфейса:

axios.request({
  method: 'GET',
  url: `http://localhost:4444/next/api`,
  headers: {
    'Authorization': token
  },
  data: {
    next_swastik: 'lets add something here'
  },

}).then((res)=>{  
  console.log("api call sucessfull",res);

}).catch((err)=>{
  console.log("api call unsucessfull",err);

  this.props.toggleLoading(false);
})

Вот ответконец:

app.get('/next/api', verifyToken, function(req, res) {
console.log(req.body);

})

Но я получаю {} пустое тело.Я получаю заголовки и другие данные, но не данные.

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Похоже, у вас осталось всего две точки, чтобы заставить его работать:

  • one: для метода http следует установить POST вместо GET, поскольку вы хотитеотправьте что-нибудь.

  • два: затем вы можете добавить заголовок http (например, что вы сделали с заголовком авторизации) Content-Type: 'application / json`

На сервере не забудьте использовать какой-нибудь пакет утилит парсера тела, такой как этот: парсер тела и настроить его вместе с приложением.

Я полагаю, что ваш сервер использует Express, вот как вы будете делать это с помощью Express:

const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const jsonParser = bodyParser.json();

app.use(jsonParser); // use it globally
app.get('your_route', jsonParser, otherMiddleware, (req, res) => ...); // use it for specific routes

/* ... rest of your code */
0 голосов
/ 20 апреля 2019

Попробуйте это

this.axios('realties', { params: this.filter })
0 голосов
/ 28 сентября 2018

GET-запросы не должны иметь тела.

Измените метод с 'GET' на 'POST'

Примерно так:

axios.request({
  method: 'POST',
  url: `http://localhost:4444/next/api`,
  headers: {
    'Authorization': token
  },
  data: {
    next_swastik: 'lets add something here'
  },

})

и измените ваш APIожидать сообщения

app.post('/next/api', verifyToken, function(req, res) {
console.log(req.body);
});

или

Измените свойство data на params

axios.request({
  method: 'GET',
  url: `http://localhost:4444/next/api`,
  headers: {
    'Authorization': token
  },
  params: {
    next_swastik: 'lets add something here'
  },

})

и измените API наВыйдите из параметров

app.get('/next/api', verifyToken, function(req, res) {
console.log(req.params);
});

и, как сказал @MaieonBrix, убедитесь, что ваши заголовки содержат тип контента, который вы отправляете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...