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
错误 TypeError:无法在“窗口”上执行“获取”:使用 GET/HEAD 方法的请求不能有正文
错误信息明确且正确。您无法从浏览器发出带有正文的 GET 请求。
HTTP 规范并没有完全禁止 GET 请求拥有主体,但它确实声明了行为未定义。您不应该尝试使用主体发出 GET 请求或编写期望它们的服务。
要么:
由于您尝试执行的请求是 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));