Response.JSON 期间 API 的 Get 方法出现问题,

问题描述 投票:0回答:2
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "userId": 1
});

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://mcqapi.onrender.com/api/dashboard", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

我想从需要关键 userId 的仪表板获取数据,但由于在 sql 过程中 userId 实际上引用了不同的表,所以我必须使用此方法,但它也不起作用,并在控制台中给出以下问题:

错误 TypeError:无法在“Window”上执行“fetch”:使用 GET/HEAD 方法的请求不能有正文。 在 API 测试.html:30:1

javascript get fetch-api
2个回答
0
投票

错误 TypeError:无法在“窗口”上执行“获取”:使用 GET/HEAD 方法的请求不能有正文

错误信息明确且正确。您无法从浏览器发出带有正文的 GET 请求。

HTTP 规范并没有完全禁止 GET 请求拥有主体,但它确实声明了行为未定义。您不应该尝试使用主体发出 GET 请求或编写期望它们的服务。

要么:

  • 查阅您正在使用的 API 的文档,了解如何正确发出请求(假设它允许您以合规的方式发出请求)
  • 更改您正在访问的 API 以传递查询字符串中的数据(并使其兼容)
  • 使用语言+HTTP请求库组合构建服务器端代理,支持带body的GET请求。

0
投票

由于您尝试执行的请求是 GET 请求,因此它不能具有正文有效负载。如果 API 要求您发送 userId,这将有助于仔细检查 API 路由或文档。

您很可能尝试发送带有查询字符串数据的 GET。您可以将数据转换为查询字符串参数,并以这种方式将它们传递到服务器。如下所示。

var myHeaders = new Headers();

var queryParams = {
  "userId": 1
};

var params = new URLSearchParams(queryParams);

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://mcqapi.onrender.com/api/dashboard?" + params, requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

© www.soinside.com 2019 - 2024. All rights reserved.