Fetch API
fetch()
is a function used to send the requests to APIs and retrieve data.
const response = fetch('someapi.com');
How Does It Work?
When you pass the URL to fetch()
, JavaScript creates a request object internally.
// Internal working
const request = new Request('someapi.com', {
method: 'GET'
});
const response = fetch(request);
The above demonstrates the initial workings of fetch()
, abstracting away the complexities for you.
Response Object
fetch()
is asynchronous, returning a promise that resolves later.
const url = "https://jsonplaceholder.typicode.com/todos/1";
async function fetchData() {
const response = await fetch(url);
console.log(response);
}
fetchData();
This will output the response object. To obtain data, you need to convert the response object into JSON.
const url = "https://jsonplaceholder.typicode.com/todos/1";
async function fetchData() {
const response = await fetch(url);
const data = await response.json();
console.log(data.title);
}
fetchData();
GET Requests Parameters
For specific data, parameters can be added to the URL, but this method isn’t secure, For safety, include parameters in the request object.
const url = 'someUrl';
async function getData() {
const request = new Request(url, {
headers: {
'Authorization': 'token'
}
});
const response = await fetch(request);
const data = await response.json();
console.log(data);
}
getData();
Error Handling
Handle errors properly. If the request is successful but the data retrieval fails. it’s still considered a success.
let’s handle the error if the request is made successfully but the data retrieval fails. Check the status code for error handling.
try {
const response = await fetch(request);
if (response.status === 200) {
const data = await response.json();
console.log('Success', data);
} else {
console.log('Server error', data.error.message);
}
} catch(error) {
console.log(error);
}
POST Request
When you send data to a server, like when submitting a form, you can use the POST
method. To do this with fetch()
, you need to include the data you want to send in the request body.
const request = new Request(url, {
headers: {...},
body: {...}
});
For more detailed information on the Fetch API, refer to the MDN documentation.
Comment your thoughts…
See you in the next chapter…