I did not feel like writing my blog post yesterday but I did code! I made a POST and Patch request using FETCH. How did I do it? Well, I followed the lab provided by my bootcamp.
First I made a GET request to get all of the items in my database and append them to the page:
function getAllToys(){ return fetch("http://localhost:3000/toys") .then(function(response) { return response.json(); }) .then(function(object) { // console.log(object); const characters = object characters.forEach(character =>{ const collection = document.querySelector('#toy-collection') // console.log(character) let div = document.createElement('div'); div.className = "card" div.innerHTML = `<h2>${character.name}</h2><br> <img src=${character.image} class="toy-avatar" /><br><p>Likes: ${character.likes}</p><button class="like-btn">Like <3</button><br>` // console.log(collection, "this is collection") collection.appendChild(div) // div.append(object.name) }) // document.body.innerHTML = object.id like() })
I called the getAllToys() function when the DOMContentLoaded:
document.addEventListener("DOMContentLoaded", () => { getAllToys(); }
Then I wanted to be able to add to my database so I created form and added an event listener to the form that would use the input given in the form and use it in a function that I named submitData
.
const form = document.querySelector("form.add-toy-form"); form.addEventListener("submit", (e) => { event.preventDefault() let input = document.querySelector('input.input-text') let image = document.querySelector('input.input-text-image') submitData(input.value, image.value) });
The submitData
function takes two arguments, which is the name and image that the user inputted into the form. Then I created a variable named configObj
for the post request that must be passed into the fetch request.
function submitData(name, image){ let formData = { name: name, image: image, }; let configObj = { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json" }, body: JSON.stringify(formData) }; return fetch("http://localhost:3000/toys", configObj) .then(function(response) { return response.json(); }) .then(function(object) { console.log(object); getAllToys(object) }) .catch(function(error) { console.log(error.message); }); }
Then I made the post request and if there are any errors, I console.log the error message.
For a better understanding on making POST request using fetch, feel free to checkout this youtube video:
As always, thanks for reading!
Sincerely,
Brittany
Top comments (0)