首页 > 解决方案 > 尝试使用 fetch 而不是 axios 发出 POST 请求,但是 fetch 请求的响应返回错误,而 axios 没有

问题描述

我有一个函数,它使用 Axios 发送一个成功通过的 POST 请求,我得到了正确的响应。现在我想尝试使用 fetch 来执行完全相同的 POST 请求。不幸的是,获取请求返回一个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,
  });

标签: javascriptfetch

解决方案


fetch不将普通物体识别为身体。

如果要发送 JSON,则需要对数据进行编码并自己设置内容类型标头。

  fetch(url, {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${getAccessToken()}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(defaultPresence),
  });

推荐阅读