Тело запроса Axios странно анализируется на сервере экспресс - PullRequest
0 голосов
/ 20 марта 2019

У меня есть nodejs экспресс-сервер и nodejs axios клиент, я пытался отправить данные поста с заголовком x-www-form-urlencoded.

app.post('/login', (req, res) => { 
   const { username, password } = req.body
   console.log(req.body) 
 })

тело запроса от клиента nodejs axios:

{ '{"username":"gefalko","password":"mypass"}': '' }

тело запроса от клиента почтальона:

{"username":"gefalko","password":"mypass"}

Я использую 'body-parser' https://www.npmjs.com/package/body-parser промежуточное ПО для анализа тела запроса на сервере.

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json()) 

и мой axios код выглядит так:

const axios = require('axios')
const prompt = require('prompt')

var prompt_attributes = [
    {
        name: 'username',
        validator: /^[a-zA-Z\s\-]+$/,
        warning: 'Username is not valid, it can only contains letters, spaces, or dashes'
    },
    {
        name: 'password',
        hidden: true
    }
]

prompt.start();

prompt.get(prompt_attributes, function (err, result) {
    if (err) {
        console.log(err);
        return 1;
    }else {
        console.log('Command-line received data:');
        const username = result.username
        const password = result.password

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

        const reqBody =  {
          username: username,
          password: password
        }

        axios.post('http://localhost:3005/login', reqBody, config).then(response => {
          console.log(response.data);
        }).catch(error => {
          console.log(error);
        })
    }
});
...