javascript - 带有 GET 正文的 Javascript REST API
问题描述
我正在使用 Javascript(前端),并且有一位同事在使用 NodeJS 在后端工作。调用 GET 请求时,他要求我将数据放入正文中,但我不知道该怎么做。(如果我将此代码用于 POST 请求,它可以正常工作)。你能告诉我这是否可能以及如何做到这一点?他说这是可能的,但我用谷歌搜索了很多,找不到正确的方法。我得到的错误:“无法在 'Window' 上执行 'fetch':使用 GET/HEAD 方法的请求不能有正文。”
let URL = "http://localhost:3000/verifyUser";
let token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NjJDMTRBNk";
fetch(URL, {
method: request,
mode: 'cors',
body: JSON.stringify({
user: 'Carlos6',
password: '543534543',
email: "algo6@gmail.com"
}),
headers: {
'Accept' : 'application/json',
'Content-type': 'application/json; charset=UTF-8',
'auth-token': token
}
}).then(function (response) {
if (response.ok) {
return response.json();
}
return Promise.reject(response);
}).then(function (data) {
console.log(data);
}).catch(function (error) {
console.warn('Something went wrong.', error);
});
解决方案
您正在使用 HTTP GET 并发送正文。
如果你想发送一个正文 (JSON),你应该使用 PUT 和 POST。
最好的可能是:
- 将您的客户端代码更改为
method: "PUT"
- 更改服务器以访问 PUT 请求
如果您想知道选择哪一个,请查看以下问题:(PUT vs. POST in REST)
推荐阅读
- r - 在数据框R中选择具有替换的子组
- sql-server - 如何将 dbisam 图像记录导出到 SQL Server
- azure-webjobs - 在构建主机之前从 KeyVault 获取 Azure WebJobs 连接字符串
- python - 如果python“逐行”运行文件,它如何在定义之前使用函数?
- leaflet - 如何在 Leaflet 的 TileLayer 上定义起始网格位置?
- reactjs - Cypress Test runner --- 我可以让“下载 React DevTools 以获得更好的开发体验”的警告消息消失吗?
- python - 使用 Selenium 抓取 javascript 网站,其中页面随机无法跨多个浏览器加载
- azure-service-fabric - 带有远程侦听器的 Azure Service Fabric ASP .net
- java - 列表
- 到地图
>、排序键、排序值和进程 - 到地图
- blob - 无法读取 Blob 存储帐户目录和子目录