Как отправить POST через axios в telegra.ph API?

Отправляю пост в telegraph API c помощью axios.post() в nodejs. в ответ получаю, что невалидный токен. хотя, если отправлять с помощь axios.get() то все получается. мне нужен post потому что в гет не принимает длинных текстов так как данные передаются в параметрах url

возможно, передаю не правильный объект или что-то не там где нужно застрингифаил.

вот код:

const requestTelegraphPOST = async (url, data) => {
    try {
        return await axios.post(url, data)
    } catch (error) {
        console.error(error)
    }
}

    requestTelegraphPOST('https://api.telegra.ph/createPage', {
        access_token: ACCESS_TOKEN,
        title,
        content
    }).then(data => {
        if (data.data.result) {
            const telegraphPostUrl = data.data.result.url
            sendPost(telegraphPostUrl)
        } else {
            console.log(chalk.yellow('Не удалось создать пост. Ответ от Telegraph API:'))
            console.log(data.data)
        }
    }).catch(err => console.error(err))

Здесь документация по API https://telegra.ph/api


Ответы (1 шт):

Автор решения: Yaroslav Molchan

Скорее всего уходит пустое тело запроса.

Для отправки данных через post в axios нужно ещё пара моментов. Можно попробовать добавить заголовки, в вашем случае это будет:

const requestTelegraphPOST = async (url, data) => {
    try {
        return await axios.post(url, data, {
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        })
    } catch (error) {
        console.error(error)
    }
}

Или есть вариант ещё собирать data через FormData и её уже отдавать в post:

const formData = new FormData();
formData.append('access_token', ACCESS_TOKEN);
...

Мне больше нравится второй вариант.

→ Ссылка