I'm working on a project that requires me to make requests to an API. What is the proper form for making a POST request with Async/Await?
As an example, here is my fetch to get a list of all devices. How would I go about changing this request to POST to create a new device? I understand I would have to add a header with a data body.
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;
};
actually your code can be improved like this:
to do a post just add the method on the settings of the fetch call.
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;
}
}
you can use a
await
to read the response stream as well:const data = fetch(url); const json = await data.json();
In my case, browser is forcing a pre-flight OPTIONS call prior to POST call. I want something like this to await for both OPTIONS & POST call to finish and return the data from POST call. Thanks for sharing.
@StangSpree the preflight call is being done automatically. maybe your backend side is not supporting the call and that could be the reason of the complain of the browser