fetch is a built-in Javascript function that allows us to make API requests using Javascript.
The basic syntax for fetch is as follows:
fetch(requestURL)
.then(function(responseData){
// Fetch will package the response into an object with some methods that allow us to do some useful things with the response.
// Use the .json() method to return the data in JSON format
return responseData.json();
})
.then(function(jsonData){
// whatever we return in the first .then promise will be passed into this callback function
// do some stuff with the jsonData here
})
.catch(function(error){
// any errors encountered in the request or the .then promises above will be passed into this callback
console.log("Oh no, there's been an error!", error);
})
Example
In this example, we'll display a list of random people using fetch and the Random User API
index.html
<h1>People</h1>
<ul id="people"></ul>
First let's look at our data in the console
script.js
fetch(requestUrl)
.then(function(responseData){
return responseData.json();
})
.then(function(jsonData){
// the above .then passed our returned data into this callback
console.log(jsonData);
// now we can see that the data we want is nested under an inner 'results'
console.log(jsonData.results)
})
.catch(function(error){
// If any error is sent back, you will have access to it here.
console.log("error!!!:", error);
});
Now let's get some of this data rendering on the page!
script.js
document.addEventListener("DOMContentLoaded", function(){
const ul = document.getElementById("people");
const requestUrl = "https://randomuser.me/api/?results=10";
function addPerson(person) {
let li = document.createElement("li");
li.textContent = person.name.first, person.name.last;
ul.appendChild(li);
}
fetch(requestUrl)
.then(function(responseData){
// Fetch will package the response into an object with some methods that allow us to do some useful things with the response.
// Use the .json method to return the data in JSON format
return responseData.json();
})
.then(function(jsonData){
// the above .then passed our returned data into this callback
console.log(jsonData);
// now we can see that the data we want is nested under an inner 'results'
console.log(jsonData.results)
// store this array of objects in a 'people' variable
let people = jsonData.results;
people.forEach(addPerson);
})
.catch(function(error){
// If any error is sent bac, you will have access to it here.
console.log("error!!!:", error);
});
});
Exercise
Add to the above code so that we see a photo along with the random user.