Попытка использовать fetch вместо axios для выполнения запроса POST, но ответ на запрос fetch возвращает ошибку, в то время как axios этого не делает

#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),
  });