Node.js не находит параметры запроса тела Axios - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть Node.js API, который принимает имя и выдает ошибку проверки 422.

// Express is setup with bodyParser:
const bodyParser = require('body-parser');
const app = express()
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
app.use(express.static('files'))

...

// API:
app.post('/test',
[
  body('name').exists(),
],
async (req, res, next) => {
  try{ 
    const errors = validationResult(req);
    if(!errors.isEmpty()){
      return res.status(422).json({ errors: errors.array() });
    }

    return res.status(200).send('Your name is ' + req.body.name);

  }catch(error){
    return res.status(422).json({ errors: errors.array() });
  }
}

Я получаю доступ к этому с помощью Axios:

const rb = {
  name : 'John', 
} 

const config = {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  params: {
    name : 'John'
  }
}

axios.post(url, rb, config)
.then((result) => {
  callback('Success', result);
})
.catch((err) => {
  callback('Oops!', err);
});

Я возвращаю первые 422, мой параметр 'name' не разрешается Node.js. Это не в rebody.body

Отправляю ли я неправильный запрос через Axios? Работает в почтальоне.

1 Ответ

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

rb должен быть объектом, который передается как тело запроса:

axios.post(url, { name : 'John' }, config)

Параметр конфигурации params используется для передачи параметров запроса / URL (доступно через req.query).

Учитывая, что он работает в Postman, я предполагаю, что ваш сервер Express использует правильный синтаксический анализатор тела (express.urlencoded).

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