9 juin 2024

Chercher des données via une API

Dans cette formation, nous allons voir comment récupérer les informations d'une API. Il faut prendre en compte qu'une API peut être créé en local avec JavaScript, PHP, etc.. En soit une API est seulement un envoi d'informations sous un format spécifique (JSON, XML).

 

Ici, nous verrons seulement la méthode “GET”, c'est-à-dire que nous n'allons envoyer aucunes informations à notre API. Nous allons seulement récupérer des informations de celle-ci.

 

Pour apprendre, nous utiliserons une API gratuite, qui ne fournit pas beaucoup de données, mais qui nous permet quand même d'utiliser les API.

 

https://randomfox.ca/floof/

 

 

Le lien retourne des données au format JSON. Il contient donc “image et “link”. Ces noms seront utiles pour la suite.

 

Déjà, créons une page HTML basique et un fichier JS.

 

 

Et insérer le script entre vos balises head du fichier html : 

 

 

A partir dÀ partir de là, nous sommes prêts à démarrer ! Rendez-vous dans votre fichier JavaScript et créer une fonction asynchrone dans un DOMContentLoaded :

 

addEventListener("DOMContentLoaded", () => {

    async function getApi() { }

});

 

Le addEventListener("DOMContentLoaded", () => {}); a pour but de faire charger le contenu JavaScript dès que la page à fini de charger tous les éléments (toutes les balises HTML).

 

Pour récupérer les informations données par l'URL, il va falloir utiliser la méthode fetch() :

 

async function getApi(){

      fetch("https://randomfox.ca/floof/")

      .then(response => response.json())

            .then(response=>{

        console.log(response)

      })

            .catch(error => console.log("Erreur : " + error));

}

 

Détaillons rapidement ce code : 

 

fetch("https://randomfox.ca/floof/") Permet de récupérer des données via un lien.

 

.then(response => response.json()) On récupère le format de notre lien et on lui spécifie que c'est du JSON, notre promesse sera donc retourner au format JSON.

 

.then(response=>{console.log(response)}) On créer une variable (response) qui prendre les différentes valeurs de notre API, ce qui nous permet d'appeler les attributs de notre API : response.image et response.link

 

.catch(error => console.log("Erreur : " + error)); Attrape l'erreur et nous l'affiche dans notre console. Donc si le lien de notre API venait d'expirer ou à être mal écrit, nous aurions une erreur : 

 

 

NB : Si vous avez du XML, mettez au format XML : 

 

fetch("lien au format XML")

  .then(response => response.text())

  .then(data => {

    const parser = new DOMParser();

    const xml = parser.parseFromString(data, "application/xml");

    console.log(xml);

  })

  .catch(console.error);

 

Pour tester si l'API fonctionne, il faut appeler la fonction getApi() :

 

async function getApi(){

      fetch("https://randomfox.ca/floof/")

      .then(response => response.json())

      .then(response=>{

        console.log(response)

      })

      .catch(error => console.log("Erreur : " + error));

}

getApi()

 

Ensuite ouvrez le fichier HTML et faite “clique droit > inspecter” et aller dans la console

 

 

On peut constater qu'on a une réponse de notre API, elle nous retourne bien l'image et le lien. Maintenant, on souhaiterait utiliser ses données dans notre fichier HTML et afficher l'image tout en la rendant cliquable. Pour ça, il va falloir créer une balise HTML dans notre body, c'est ici qu'on incorporera notre image cliquable via JavaScript :

 

<body>

    <section id="foxApi"></section>

</body>

 

Maintenant, rendons-nous de nouveau dans notre fichier JavaScript pour créer notre image. Il faudra récupérer notre nouvelle <section> pour lui insérer une balise <img> :

 

addEventListener("DOMContentLoaded", () => {

    let foxApi = document.getElementById('foxApi')

 

    async function getApi() {

        fetch("https://randomfox.ca/floof/")

        .then(response => response.json())

        .then(response => {

            let img = document.createElement("img");

            img.setAttribute('src', response.image);

            foxApi.appendChild(img);

        })

        .catch(error => console.log("Erreur : " + error));

    }

    getApi()

});

 

Si on actualise notre page HTML, nous aurons bien notre image d'afficher, pour preuve, on peut inspecter le contenu de notre page HTML via l'inspecteur : 

 

 

Il ne reste plus qu'à rendre l'image cliquable :

 

addEventListener("DOMContentLoaded", () => {

    let foxApi = document.getElementById('foxApi')

 

    async function getApi() {

        fetch("https://randomfox.ca/floof/")

        .then(response => response.json())

        .then(response => {

            let img = document.createElement("img");

            let link = document.createElement("a");

            link.setAttribute('href', response.link);

            img.setAttribute('src', response.image);

            link.appendChild(img);

            foxApi.appendChild(link);

        })

       .catch(error => console.log("Erreur : " + error));

    }

    getApi()

});

 

 

Notre image est cliquable. Nous avons réussi à rendre dynamique notre page HTML.

 

J'espère que vous avez appris des choses !

Mots clés:

Cours Du Dev

Recevez les dernières formations disponibles en vous inscrivant à la newsletter

Créé par arkunis