@Soul1

Как в JS сделать POST-запрос через fetch?

Есть пример POST-запроса на Python:
spoiler
import requests

data = {
    'grant_type': ***,
    'client_id': ***,
    'client_secret': ***
}
url = ***
token = requests.post(url, data).json()['access_token']

Как сделать аналогичный запрос в JS?
Пробовал вторым аргументом в fetch передавать data и указывать тип запроса POST, ничего не работает, приходит ответ 401 (код внутри async функции).
spoiler
var url = ***
var token = await fetch(url, {
        'method': 'POST',
        'grant_type': ***,
        'client_id': ***,
        'client_secret': ***
}).then(r => r.json()['access_token']);
  • Вопрос задан
  • 274 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если данные передаются как multipart/form-data, то:
const data = new FormData();
data.append('grant_type',  ...);
data.append('client_id', ...);
data.append('client_secret', ...);

const response = await fetch(
  url,
  {
    method: 'POST',
    body: data
  }
);

const token = await response.json();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Пробуй так:
var url = 'https://адрес_запроса';

var data = {
    'grant_type': ***,
    'client_id': ***,
    'client_secret': ***
};

var response = await (await fetch(url, {
	'method': 'POST',
	'headers': {
		'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
	},
	'body': new URLSearchParams(data).toString()
})).json();

console.log('Ответ сервера:');
console.dir(response);

console.log('Токен:');
console.dir(response['access_token']);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы