Go back

API Consumptions

This day we learnt how to consume API from the internet using the https://official-joke-api.appspot.com/random_joke API. We used this API because it has no API key and API key security is not something we want to think about at this moment. We also took inspiration from this design - https://www.frontendmentor.io/challenges/advice-generator-app-QdUG-13db

All the components used in this code are discussed in previous classes.

Practice challenge

Search the internet to find a few good APIs you would like to use and if you are enthusiastic, make a web application with that API key. (Don’t upload it to github yet, show it to me in person)

A place to find APIs - https://publicapis.io/

Few good/interesting/fun APIs -

https://pokeapi.co/ https://developer.themoviedb.org/docs/getting-started https://musicbrainz.org/doc/MusicBrainz_API

Codes

Joke API Application

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Laugh out Loud</title>
    <link rel="stylesheet" href="./style.css" />
</head>
<body>
    <div class="card">
        <p id="setup">Lorem ipsum dolor sit amet consectetur adipisicing elit. Est natus magni beatae aperiam ducimus non itaque rem laborum quidem animi?</p>
        <p id="punchline">
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Possimus, suscipit.
        </p>
        <button onclick="fetchData()">GG</button>
    </div>
    <script src="./app.js"></script>
</body>
</html>

style.css

@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap');

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body{
    min-height: 100dvh;
    background-color: #191e2d;
    color: white;
    display: grid;
    place-items: center;
    font-family: "Noto Sans", Arial, Helvetica, sans-serif;
}


.card{
    background-color: #424a62;
    padding: 40px;
    border-radius: 20px;
    max-width: 600px;
    position: relative;
}

.card p{
    font-size: 2rem;
    margin-bottom: 5px;
}

.card #setup{
    color: #aaa;
    font-size: 1.8rem;
}

.card button{
    border-radius: 10px;
    display: block;
    margin: 0 auto;
    padding: 10px 20px;
    border: none;
    outline: none;
    background-color: aquamarine;
    cursor: pointer;
    font-size: 1.2rem;
    position: absolute;
    bottom: -20px;
    left: 50%;
    transform: translate(-50%);
}

.card button:hover{
    background-color: #2cc290;
}

app.js

const setup = document.getElementById("setup");
const punchline = document.getElementById("punchline");

async function fetchData(){
  try {
    let res = await fetch("https://official-joke-api.appspot.com/random_joke")
    res = await res.json()
    setup.innerText = res.setup 
    punchline.innerText = res.punchline
  } catch (error) {
    console.log(err)
  }  
}

fetchData();

/* Using chain function
fetch("https://official-joke-api.appspot.com/random_joke")
    .then(res => res.json())
    .then(res => {
        setup.innerText = res.setup 
        punchline.innerText = res.punchline
    })
    .catch(err => {
        console.log(err)
    })
*/