#javascript #fetch
Вопрос:
У меня есть функция, которая использует Axios для отправки запроса POST, который успешно выполняется, и я получаю правильный ответ. Теперь я хочу попробовать использовать fetch для выполнения точно такого же запроса на публикацию. К сожалению, запрос на извлечение возвращает 415 Unsupported Media Type
ошибку ответа, и я понятия не имею, почему.
В настоящий момент:
onBeforeUnload = () => {
try {
const defaultPresence = {
presence: 'AVAILABLE',
message: '',
};
const url = getServerURL() urls.PRESENCE;
axios.post(
url,
defaultPresence,
{
headers: {
Authorization: `Bearer ${getAccessToken()}`,
},
},
);
} catch (error) {
console.log(error);
}
}
Код выборки, который я использовал для замены запроса Axios POST.
fetch(url, {
method: 'POST',
headers: {
Authorization: `Bearer ${getAccessToken()}`,
},
body: defaultPresence,
});
Ответ №1:
fetch
не распознает простые объекты как тело.
Если вы хотите отправить JSON, вам нужно закодировать данные и самостоятельно установить заголовок типа содержимого.
fetch(url, {
method: 'POST',
headers: {
Authorization: `Bearer ${getAccessToken()}`,
"Content-Type": "application/json",
},
body: JSON.stringify(defaultPresence),
});