Consommer un service web

Appeler un service web depuis un programme : appel asynchrone, promesse, lecture de la réponse, erreurs HTTP, délai dépassé, jeton d'authentification, pagination.

  • 25 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Client HTTP : de quoi s'agit-il ?

    Voir la réponse

    Partie d'un programme qui construit une requête (URL, méthode, en-têtes, corps), l'envoie à un serveur et lit la réponse.

    Navigateur, curl, fetch en JavaScript, requests en Python : ce sont tous des clients HTTP. Le serveur ne voit que la requête, pas le langage qui l'a écrite.

  • Dans quel ordre ce programme affiche-t-il les lettres, une fois que le serveur a répondu ?

    ```javascript
    console.log("A");
    fetch(url).then(() => console.log("B"));
    console.log("C");
    `

    • A, C, B
    • A, B, C
    • B, A, C
    • C, A, B
    Voir la réponse

    A, C, B

    fetch rend la main tout de suite avec une promesse : le programme continue et affiche C. La fonction passée à .then ne s'exécute qu'après la fin du code en cours, quand la réponse est là.

  • Dans une fonction déclarée …, le mot-clé … attend qu'une promesse soit résolue avant de passer à la ligne suivante, sans bloquer le reste du programme.

    Voir la réponse

    Dans une fonction déclarée async, le mot-clé await attend qu'une promesse soit résolue avant de passer à la ligne suivante, sans bloquer le reste du programme.

    await n'existe que dans une fonction async (ou au niveau supérieur d'un module). Pendant l'attente, le programme exécute le code qui suit l'appel de la fonction.

  • Appel asynchrone : de quoi s'agit-il ?

    Voir la réponse

    Appel qui rend la main tout de suite et dont le résultat arrive plus tard, pendant que le programme continue.

    Une réponse réseau prend des dizaines de millisecondes ou plus ; attendre sur place figerait l'interface. Le code qui dépend de la réponse est exécuté à son arrivée.

  • Un appel répond 401 Unauthorized depuis ce matin alors que le code n'a pas changé. Quelle est la cause la plus probable et la solution ?

    • Le serveur est en panne : réessayer en boucle jusqu'à ce qu'il réponde
    • L'URL est incorrecte : ajouter une barre oblique à la fin
    • Le jeton a expiré : en obtenir un autre
    • La méthode est mauvaise : passer de GET à POST
    Voir la réponse

    Le jeton a expiré : en obtenir un autre

    401 dit « je ne sais pas qui tu es » : identifiants absents, faux ou périmés. Un jeton expiré est le cas le plus courant quand rien n'a changé côté code. Une panne donnerait un 5xx, une mauvaise URL un 404.