5. Fetch & promises
5. Fetch & promises
In deze oefeningenreeks oefen je op:
- Het manipuleren van de DOM
- Het gebruik fetch
- Het werken met promises
- Het gebruik van asynchrone functies
Voor deze oefeningen zijn startbestanden voorzien, je vindt deze op GitPub.
Startbestanden
Oefening 1
Maak gebruik van de JSON Placeholder API om een lijst van users te tonen. Gebruik deze gegevens om een unordered-list van gebruikers te tonen.

Breid bovenstaande oefening uit zodat een user highlighted wordt als je er met je muis over beweegt. Natuurlijk moet deze highlighting wel terug ongedaan gemaakt worden als de muis niet meer over de user beweegt.
Oefening 2
Maak gebruik van de Star Wars API om de personages uit de Star Wars films te tonen. Toon deze personages aan de hand van een Bootstrap list group. Het is voldoende als je enkele de eerste pagina (10 personages) toont.
Info
De Star Wars API's worden gratis gehost door vrijwilligers en kunnen soms onbereikbaar zijn. Als bovenstaande API offline is kan je https://swapi-api.hbtn.io/ als alternatief gebruiken.
De structuur en data is identiek voor beide API's.
Toon de naam van het personage en het gender als dit niet 'n/a' is.

Zorgt voor foutafhandeling, als het request mislukt, moet er een gepaste boodschap getoond worden in de div met het id error-message. Hiervoor moet je de 'd-none' klasse nog programmatorisch verwijderen van de div. Je kan dit bijvoorbeeld testen door de URL te wijzigen naar "https://swapi.dev/api/peoooooople/".

Oefening 3
Maak een webpagina waarmee je (random) afbeeldingen kan ophalen van https://picsum.photos/. Je haalt ene lijst van 25 afbeeldingen, filtert deze zodat enkel de liggende (landscape) afbeeldingen overblijven en toont deze op de pagina.
Als de pagina opstart wordt een spinner getoond (al beschikbaar in de startbestanden). Deze spinner moet verborgen worden als alle data ingeladen is uit de API. Aangezien dit resultaat heel snel geladen is, zie je de spinner misschien niet. Voeg een artificiële timeout toe van 2 seconden om voordat het request naar de API gestuurd wordt. Ga in lesvoorbeeld 5 kijken als je niet weet hoe je dit kunt doen. Om de spinner onzichtbaar te maken kan je het hidden attribuut op true zetten.
Gebruik de markup (HTML) uit de opgave om een overzicht van de afbeeldingen te tonen.
Extra
Hieronder vind je een aantal gratis APIs. Kies er eentje uit die je interesseert (of zoek zelf eentje online) en maak een simpele pagina die:
- Met fetch gegevens ophaalt
- Deze toont in een zelf gekozen control
Doe er gerust iets grappig mee, speel er eens mee om te zien wat je allemaal kan.
APIs:
- https://api.chucknorris.io/
- Om random Chuck Norris grappen te genereren
- https://www.omdbapi.com/
- Om info over films en series op te halen
- https://swapi-api.hbtn.io/
- De Star Wars API uit oefening 2, maar toon nu iets anders
- https://openweathermap.org/api
- Weerberichten: hiervoor moet je een gratis account aanmaken en een API Key meegeven.
- Check de documentatie en vraag hulp aan je docent indien nodig.
- https://pokeapi.co/docs/v2
- Gotta catch em all
- https://api.kanye.rest/
- Kanye West quotes waar je van gaat fronsen
- https://deckofcardsapi.com/
- Een klassiek kaartspel maken? Deze API geeft je een spel kaarten om mee te starten.
- Voor gevorderden met tijd
- https://opentdb.com/api_config.php
- Om trivia vragen te genereren
- Een kwis is 1 van de makkelijkste spellen om te maken, probeer het eens!