我正在做一个需要我向API发出请求的项目。用Async / Await发出POST请求的正确形式是什么?
举例来说,这是我获取所有设备列表的信息。我将如何将此请求更改为POST以创建新设备?我知道我必须添加带有数据正文的标头。
getDevices = async () => {
const location = window.location.hostname;
const response = await fetch(
`http://${location}:9000/api/sensors/`
);
const data = await response.json();
if (response.status !== 200) throw Error(data.message);
return data;
};
实际上,您的代码可以像这样进行改进:
要发表文章,只需在获取调用的设置上添加方法。
getDevices = async () => {
const location = window.location.hostname;
const settings = {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
}
};
try {
const fetchResponse = await fetch(`http://${location}:9000/api/sensors/`, settings);
const data = await fetchResponse.json();
return data;
} catch (e) {
return e;
}
}
您也可以使用
await
读取响应流:const data = fetch(url); const json = await data.json();
就我而言,浏览器在POST调用之前强制执行飞行前OPTIONS调用。我希望这样的事情等待OPTIONS&POST调用完成并从POST调用返回数据。感谢分享。
@StangSpree预检调用自动完成。可能您的后端不支持该呼叫,这可能是浏览器抱怨的原因