Tester une API

team-off Messages postés 1379 Statut Membre -  
team-off Messages postés 1379 Statut Membre -
Bonjour, je viens de découvrir les API je ne connaissais pas et je trouve ça très intérressant j'ai tester un peux mais sans succès j'ai essayer ça ça n'a rien donné juse le fichier html qui fonctionne

Voici le fichier cours.js
// Accès à la météo de Lyon avec la clé d'accès 50a65432f17cf542
ajaxGet("http://api.wunderground.com/api/50a65432f17cf542/conditions/q/France/Lyon.json", function (reponse) {
var meteo = JSON.parse(reponse);
// Récupération de certains résultats
var temperature = meteo.current_observation.temp_c;
var humidite = meteo.current_observation.relative_humidity;
var imageUrl = meteo.current_observation.icon_url;
// Affichage des résultats
var conditionsElt = document.createElement("div");
conditionsElt.textContent = "Il fait actuellement " + temperature +
"°C et l'humidité est de " + humidite;
var imageElt = document.createElement("img");
imageElt.src = imageUrl;
var meteoElt = document.getElementById("meteo");
meteoElt.appendChild(conditionsElt);
meteoElt.appendChild(imageElt);
});


Et le fichier cours.html
<!doctype html>
<html>

<head>
<meta charset="utf-8">
<title>Utiliser des API</title>
</head>

<body>
<h1>Derniers articles</h1>
<div id="articles">
</div>

<h1>Le Premier Ministre</h1>
<div id="premMin">
</div>

<h1>La météo à Lyon</h1>
<div id="meteo"></div>

<script src="../js/cours.js"></script>
</body>

</html>

J'ai suivis un peut ce tuto
https://openclassrooms.com/fr/courses/3306901-creez-des-pages-web-interactives-avec-javascript/3722361-utilisez-des-api-web

Merci d'avance :D
--
Veuillez indiquer présicément votre problème, nous faisons de notre mieux pour y répondre. Je répond à vos question de 19h à 23h la semaine :)

11 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Si tu avais fait un copier/coller du tuto.. tu n'aurais pas oublié une ligne visiblement :-)
    <script src="../js/ajax.js"></script>
    


    Bien entendu.. tu as récupéré le fichier ajax.js que tu as mis dans le répertoire de ton site .... comme indiqué ici :

    Copiez le fichierajax.jsissu du chapitre précédent dans le répertoire


    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Le contenu du fichier ajax.js
      // Exécute un appel AJAX GET
      // Prend en paramètres l'URL cible et la fonction callback appelée en cas de succès
      function ajaxGet(url, callback) {
          var req = new XMLHttpRequest();
          req.open("GET", url);
          req.addEventListener("load", function () {
              if (req.status >= 200 && req.status < 400) {
                  // Appelle la fonction callback en lui passant la réponse de la requête
                  callback(req.responseText);
              } else {
                  console.error(req.status + " " + req.statusText + " " + url);
              }
          });
          req.addEventListener("error", function () {
              console.error("Erreur réseau avec l'URL " + url);
          });
          req.send(null);
      }
      
      0
    2. team-off Messages postés 1379 Statut Membre 34 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Tout d'abord merci pour votre réponse, alors j'ai donc trois fichier dans le même dossier que j'ai mis sur le bureau qui ce nomme "tes"
      j'ai donc "cours.html"
      <!doctype html>
      <html>

      <head>
      <meta charset="utf-8">
      <title>Utiliser des API</title>
      </head>

      <body>
      <h1>Derniers articles</h1>
      <div id="articles">
      </div>

      <h1>Le Premier Ministre</h1>
      <div id="premMin">
      </div>

      <h1>La météo à Lyon</h1>
      <div id="meteo"></div>

      <script src="../js/ajax.js"></script>
      <script src="../js/cours.js"></script>
      </body>

      </html>


      Ensuite j'ai "cours.js"
      var premMinElt = document.getElementById("premMin");
      // Accès aux informations publiques sur le Premier Ministre
      ajaxGet("https://www.data.gouv.fr/api/1/organizations/premier-ministre/", function (reponse) {
      var premierMinistre = JSON.parse(reponse);
      // Ajout de la description et du logo dans la page web
      var descriptionElt = document.createElement("p");
      descriptionElt.textContent = premierMinistre.description;
      var logoElt = document.createElement("img");
      logoElt.src = premierMinistre.logo;
      premMinElt.appendChild(descriptionElt);
      premMinElt.appendChild(logoElt);
      });


      et j'ai "ajax.js"
      // Exécute un appel AJAX GET
      // Prend en paramètres l'URL cible et la fonction callback appelée en cas de succès
      function ajaxGet(url, callback) {
      var req = new XMLHttpRequest();
      req.open("GET", url);
      req.addEventListener("load", function () {
      if (req.status >= 200 && req.status < 400) {
      // Appelle la fonction callback en lui passant la réponse de la requête
      callback(req.responseText);
      } else {
      console.error(req.status + " " + req.statusText + " " + url);
      }
      });
      req.addEventListener("error", function () {
      console.error("Erreur réseau avec l'URL " + url);
      });
      req.send(null);
      }
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu dis :

      alors j'ai donc trois fichier dans le même dossier

      .... mais .. les fichiers js ... tu les as mis dans un sous-répertoire "js" comme indiqué dans le code que tu utilises ???
      <script src="../js/ajax.js"></script>
       <script src="../js/cours.js"></script>

      Ou alors tu modifies le code pour retirer le dossier js .. à toi de voir !
      0
    4. team-off Messages postés 1379 Statut Membre 34
       
      Ah je ne savais pas ca je n'ai pas créer de sous répertoire js mais je préfère modifier mon code. J'ai créer un dossier sur mon bureau s'appelant test et dans ce dossier ce trouve les trois fichiers. Que dois-je mettre dans le code du coup ?
      0
    5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > team-off Messages postés 1379 Statut Membre
       
      Ben tout simplement la même chose .. mais sans le ../js
      C'est la base à connaitre ... les chemins relatifs !
      <script src="ajax.js"></script>
       <script src="cours.js"></script>
      
      0
  2. team-off Messages postés 1379 Statut Membre 34
     
    J'ai fais les modifications et ça ne fonctionne toujours pas... ça me donne comme avant c'est à dire ça :




    Voici le code index.html
    <!doctype html>
    <html>

    <head>
    <meta charset="utf-8">
    <title>Utiliser des API</title>
    </head>

    <body>
    <h1>Derniers articles</h1>
    <div id="articles">
    </div>

    <h1>Le Premier Ministre</h1>
    <div id="premMin">
    </div>

    <h1>La météo à Lyon</h1>
    <div id="meteo"></div>

    <<script src="../js/ajax.js"></script>
    <script src="../js/cours.js"></script>
    </body>

    </html>


    Le code cours.js

    var premMinElt = document.getElementById("premMin");
    // Accès aux informations publiques sur le Premier Ministre
    ajaxGet("https://www.data.gouv.fr/api/1/organizations/premier-ministre/", function (reponse) {
    var premierMinistre = JSON.parse(reponse);
    // Ajout de la description et du logo dans la page web
    var descriptionElt = document.createElement("p");
    descriptionElt.textContent = premierMinistre.description;
    var logoElt = document.createElement("img");
    logoElt.src = premierMinistre.logo;
    premMinElt.appendChild(descriptionElt);
    premMinElt.appendChild(logoElt);
    });


    Et ajax.js

    // Exécute un appel AJAX GET
    // Prend en paramètres l'URL cible et la fonction callback appelée en cas de succès
    function ajaxGet(url, callback) {
    var req = new XMLHttpRequest();
    req.open("GET", url);
    req.addEventListener("load", function () {
    if (req.status >= 200 && req.status < 400) {
    // Appelle la fonction callback en lui passant la réponse de la requête
    callback(req.responseText);
    } else {
    console.error(req.status + " " + req.statusText + " " + url);
    }
    });
    req.addEventListener("error", function () {
    console.error("Erreur réseau avec l'URL " + url);
    });
    req.send(null);
    }

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Relis ton code... tu as laisse les memes chemins...
      0
  3. team-off Messages postés 1379 Statut Membre 34
     
    Ah oui j'ai oubliée ma cervelle aujourd'hui ça fonctionne merci mais par exemple la sncf publie des API aussi j'aurais voulu essayer mais impossible donc je récupère le code grâce à post man je récupère le code de ce lien "https://api.sncf.com/v1". Ensuite je crée un dossier qui ce trouve sur le bureau je le nomme test2 dans ce dossier je crée un fichier HTML ce nommant test.html

    <!doctype html>
    <html>

    <head>
    <meta charset="utf-8">
    <title>Utiliser des API</title>
    </head>

    <body>
    <h1>Derniers articles</h1>
    <div id="articles">
    </div>

    <h1>Le Premier Ministre</h1>
    <div id="premMin">
    </div>

    <h1>La météo à Lyon</h1>
    <div id="meteo"></div>

    <script src="teste.js"></script>

    </html>


    Et ça ne fonctionne pas :(

    Veuillez indiquer présicément votre problème, nous faisons de notre mieux pour y répondre. Je répond à vos question de 19h à 23h la semaine :)
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Que contient ton fichier teste.js ?
      0
    2. team-off Messages postés 1379 Statut Membre 34
       
      Alors voici les fichiers

      index.html (qui était avant test.html)

      <!doctype html>
      <html>

      <head>
      <meta charset="utf-8">
      <title>Utiliser des API</title>
      </head>

      <body>
      <h1>Derniers articles</h1>
      <div id="articles">
      </div>

      <h1>Le Premier Ministre</h1>
      <div id="premMin">
      </div>

      <h1>La météo à Lyon</h1>
      <div id="meteo"></div>

      <script src="cours.js"></script>

      </html>


      Et voici cours.js (qui était avant teste.js)

      {
      "links": [
      {
      "title": "Coverage of navitia",
      "href": "https://api.sncf.com/v1/coverage/",
      "type": "coverage",
      "rel": "coverage",
      "templated": false
      },
      {
      "title": "Inverted geocoding for a given coordinate",
      "href": "https://api.sncf.com/v1/coord/0.0%3B0.0/",
      "type": "coord",
      "rel": "coord",
      "templated": true
      },
      {
      "title": "Compute journeys",
      "href": "https://api.sncf.com/v1/journeys",
      "type": "journeys",
      "rel": "journeys",
      "templated": false
      },
      {
      "title": "Autocomplete api",
      "href": "https://api.sncf.com/v1/places",
      "type": "places",
      "rel": "places",
      "templated": false
      }
      ]
      }
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > team-off Messages postés 1379 Statut Membre
         
        le problème c'est que tu as remplacé du code ... par un objet json....
        Normal que ça ne marche pas.
        Il faut que tu remettes l'ancien fichier cours.js et que dedans .. tu changes juste l'url pour taper sur l'API (https://api.sncf.com/v1

        par exemple :
        //url de l'api ciblée
        var url_de_api = "https://api.sncf.com/v1";
        
        // Accès aux informations publiques sur le Premier Ministre
        var premMinElt = document.getElementById("premMin");
        
        ajaxGet(url_de_api, function (reponse) {
            var repJson = JSON.parse(reponse);
        
            // Ici .. tu peux mettre le code de traitement que tu veux pour cette reponse...
            // par exemple : affiche dans la CONSOLE du navigateur la réponse   
             console.log(repJson);
          
        });
        
        0
  4. team-off Messages postés 1379 Statut Membre 34
     
    Alors j'ai copiè ce que vous m'avais donner je l'ai placer dans "cours.js" (pour essayer bien-sûr)

    cours.js

    //url de l'api ciblée
    var url_de_api = "https://api.sncf.com/v1";

    // Accès aux informations publiques sur le Premier Ministre
    var premMinElt = document.getElementById("premMin");

    ajaxGet(url_de_api, function (reponse) {
    var repJson = JSON.parse(reponse);

    // Ici .. tu peux mettre le code de traitement que tu veux pour cette reponse...
    // par exemple : affiche dans la CONSOLE du navigateur la réponse
    console.log(repJson);

    });


    index.html

    <!doctype html>
    <html>

    <head>
    <meta charset="utf-8">
    <title>Utiliser des API</title>
    </head>

    <body>
    <h1>Derniers articles</h1>
    <div id="articles">
    </div>

    <h1>Le Premier Ministre</h1>
    <div id="premMin">
    </div>

    <h1>La météo à Lyon</h1>
    <div id="meteo"></div>

    <script src="cours.js"></script>
    </html>


    Et ça ne fonctionne pas...
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Comment tu sais que çà ne marche pas ?
      Que t'affiche la console de ton navigateur ??
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. team-off Messages postés 1379 Statut Membre 34
     
    La console me dit ça :

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu as bien inclus le fichier ajax.js ???
      0
  7. team-off Messages postés 1379 Statut Membre 34
     
    Ah non je ne savais pas mais le "ajax.js" je le laisse tel quels ?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      ..ben oui.
      Sais tu ce qu'est une FONCTION ?

      Dans ton fichier tu fais appel à une fonction ... la fonction ajaxGet .
      Cette fonction est écrite dans le fichier ajax.js .. sans ça .. normal que ça ne marche pas !

      Enfin bon.... sachant que ce fichier était présent dans ton premier exemple ... je ne comprend pas par quelle mystère tu as décidé de le retirer ....... (en pensant que ça ne changerait rien... Oo )
      0
      1. team-off Messages postés 1379 Statut Membre 34 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        J'ai remis le fichier ajax.js dans le dossier et j'ai indiqué au fichier HTML que ajax.js était present mais ça ne fonctionne pas...
        0
      2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > team-off Messages postés 1379 Statut Membre
         
        Et qu'est-ce qui s'affiche dans la console ?
        0
  8. team-off Messages postés 1379 Statut Membre 34
     
    Alors j'ai exactement la même erreur que la dernière fois
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Tu peux me montrer le code modifié que tu utilises ?
      0
    2. team-off Messages postés 1379 Statut Membre 34
       
      Le code ajax.js ?
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > team-off Messages postés 1379 Statut Membre
         
        TOUS .... histoire d'être bien sûr.
        0
  9. team-off Messages postés 1379 Statut Membre 34
     
    Voici index.html

    <!doctype html>
    <html>

    <head>
    <meta charset="utf-8">
    <title>Utiliser des API</title>
    </head>

    <body>
    <h1>Derniers articles</h1>
    <div id="articles">
    </div>

    <h1>Le Premier Ministre</h1>
    <div id="premMin">
    </div>

    <h1>La météo à Lyon</h1>
    <div id="meteo"></div>

    <script src="cours.js"></script>
    <script src="ajax.js"></script>
    </html>


    Voici cours.js

    var premMinElt = document.getElementById("premMin");
    // Accès aux informations publiques sur le Premier Ministre
    ajaxGet("https://api.sncf.com/v1", function (reponse) {
    var premierMinistre = JSON.parse(reponse);
    // Ajout de la description et du logo dans la page web
    var descriptionElt = document.createElement("p");
    descriptionElt.textContent = premierMinistre.description;
    var logoElt = document.createElement("img");
    logoElt.src = premierMinistre.logo;
    premMinElt.appendChild(descriptionElt);
    premMinElt.appendChild(logoElt);
    });


    Et voici ajax.js

    // Exécute un appel AJAX GET
    // Prend en paramètres l'URL cible et la fonction callback appelée en cas de succès
    function ajaxGet(url, callback) {
    var req = new XMLHttpRequest();
    req.open("GET", url);
    req.addEventListener("load", function () {
    if (req.status >= 200 && req.status < 400) {
    // Appelle la fonction callback en lui passant la réponse de la requête
    callback(req.responseText);
    } else {
    console.error(req.status + " " + req.statusText + " " + url);
    }
    });
    req.addEventListener("error", function () {
    console.error("Erreur réseau avec l'URL " + url);
    });
    req.send(null);
    }


    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Fais l'import d'ajax.js AVANT cours.js

      Puis dans cours.js remplace ton code par celui-ci
      //url de l'api ciblée
      var url_de_api = "https://api.sncf.com/v1";
      
      // Accès aux informations publiques sur le Premier Ministre
      var premMinElt = document.getElementById("premMin");
      
      ajaxGet(url_de_api, function (reponse) {
          var repJson = JSON.parse(reponse);
      
          // Ici .. tu peux mettre le code de traitement que tu veux pour cette reponse...
          // par exemple : affiche dans la CONSOLE du navigateur la réponse   
           console.log(repJson);
        
      });
      
      0
      1. team-off Messages postés 1379 Statut Membre 34 > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Comment ça l'import d'ajax.js avant cours.js ?
        0
      2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > team-off Messages postés 1379 Statut Membre
         
        Ben .. au lieu de
        <script src="cours.js"></script>
        <script src="ajax.js"></script>
        

        tu inverses comme ceci :
        <script src="ajax.js"></script>
         <script src="cours.js"></script>
        
        
        0
  10. team-off Messages postés 1379 Statut Membre 34
     
    Ça ne fonctionne toujours pas voici les fichiers :

    index.html
    <!doctype html>
    <html>

    <head>
    <meta charset="utf-8">
    <title>Utiliser des API</title>
    </head>

    <body>
    <h1>Derniers articles</h1>
    <div id="articles">
    </div>

    <h1>Le Premier Ministre</h1>
    <div id="premMin">
    </div>

    <h1>La météo à Lyon</h1>
    <div id="meteo"></div>

    <script src="ajax.js"></script>
    <script src="cours.js"></script>
    </html>


    cours.js
    //url de l'api ciblée
    var url_de_api = "https://api.sncf.com/v1";

    // Accès aux informations publiques sur le Premier Ministre
    var premMinElt = document.getElementById("premMin");

    ajaxGet(url_de_api, function (reponse) {
    var repJson = JSON.parse(reponse);

    // Ici .. tu peux mettre le code de traitement que tu veux pour cette reponse...
    // par exemple : affiche dans la CONSOLE du navigateur la réponse
    console.log(repJson);

    });


    et ajax.js
    // Exécute un appel AJAX GET
    // Prend en paramètres l'URL cible et la fonction callback appelée en cas de succès
    function ajaxGet(url, callback) {
    var req = new XMLHttpRequest();
    req.open("GET", url);
    req.addEventListener("load", function () {
    if (req.status >= 200 && req.status < 400) {
    // Appelle la fonction callback en lui passant la réponse de la requête
    callback(req.responseText);
    } else {
    console.error(req.status + " " + req.statusText + " " + url);
    }
    });
    req.addEventListener("error", function () {
    console.error("Erreur réseau avec l'URL " + url);
    });
    req.send(null);
    }


    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Quand tu dis : ça ne fonctionne pas ... c'est à dire ??? Tu as toujours le message d'erreur ? Tu as bien fais un CTRL + F5 dans ton navigateur pour rafraichir tout en vidant son cache ?
      Ou bien c'est juste que ça ne fait pas ce que tu veux ???

      Quoi qu'il en soit .. qu'est-ce qui apparait dans la console ?

      J'ai retesté de mon côté hier et n'ai eu aucun souci.....
      0
  11. team-off Messages postés 1379 Statut Membre 34
     
    Alors j'ai toujours la même erreur c'est vraiment bisard et pour la console je fait touche "Ctrl"+flèche haut+"J"


    Veuillez indiquer présicément votre problème, nous faisons de notre mieux pour y répondre. Je répond à vos question de 19h à 23h la semaine :)
    0
  12. team-off Messages postés 1379 Statut Membre 34
     
    Ca fonctionne super content !! Merci beaucoup mais je comprend pas quand je met une autre api qui demande un num d'uttilisateur que j'ai bien rentrèe ca fonctionne avec cette API "https://api.sncf.com/v1/coverage/sncf/places?q=Paris" ca ne fonctionne pas je dois bien rentrée ma clé mais je dois la mettre dans le code j'ai ça comme erreur avec cette API qui ne demande pas de code "https://api.sncf.com/v1/coverage/sncf/journeys?from=admin:fr:75056&to=admin:fr:69123&datetime=20170501T232424"


    0