Как добавить данные в POST-запрос с помощью Axios? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь сделать запрос POST, но на моей вкладке Chrome Network появляется следующее сообщение:

{error: "unsupported_grant_type",…} error: "unsupported_grant_type" error_description: "grant_typeдолжно быть client_credentials, authorization_code или refresh_token "

Я использую Axios для вызовов RESTful, и это запрос POST:

async componentDidMount() {
    const encodedString = 'blah'//some encoded string
    const [initSpotResponse] = await Promise.all([
        axios.post('https://accounts.spotify.com/api/token',
            { data: { grant_type: 'client_credentials' } },
            {
                headers: {
                    'Authorization': `Basic ${encodedString}`,
                    'Content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
                }
            }
        )
    ]);
}

Я пробовал все упомянутые вещив других сообщениях StackOverflow, но ничего не работает.У кого-нибудь есть опыт создания такого POST-запроса?Я не видел пост, посвященный аксиосам об этой проблеме - должен ли я отказаться от аксиос (на что мне следует переключиться, если так)?

1 Ответ

0 голосов
/ 24 мая 2019

axios.post принимает в качестве второго параметра объект данных (axios.post(url[, data[, config]])), сериализует данные с помощью qs и пробует это, как указано здесь :

const qs = require('querystring');


async componentDidMount() {
    const encodedString = 'blah'//some encoded string
    const [initSpotResponse] = await Promise.all([
        axios.post('https://accounts.spotify.com/api/token',
            qs.stringify({ grant_type: 'client_credentials' }),
            {
                headers: {
                    'Authorization': `Basic ${encodedString}`,
                    'Content-type': 'application/x-www-form-urlencoded;charset=UTF-8'
                }
            }
        )
    ]);
}
...