Aller au contenu principal

Le Web et les requêtes HTTP

Comprendre le Web et les requêtes HTTP.

Notions théoriques

Fonctionnement de base du Web

Le Web fonctionne grâce à une interaction (protocole HTTP) entre :

  • les clients (comme votre navigateur)
  • et les serveurs (où les sites Web sont stockés).

Lorsque vous tapez l'adresse d'un site Web ou cliquez sur un lien,

  • le client (votre navigateur) envoie une requête au serveur qui héberge le site Web,
  • puis le serveur répond en envoyant les fichiers nécessaires pour afficher la page
  • au client (votre navigateur), qui les interprète et les affiche sous forme de site Web.

Les requêtes HTTP (GET, POST)

HTTP (HyperText Transfer Protocol) est le protocole utilisé pour envoyer et recevoir des informations sur le Web.

Les requêtes HTTP les plus courantes sont GET et POST :

  • GET est utilisée pour demander des données.

    Par exemple, lorsque vous voulez lire un article sur un blog, votre navigateur envoie une requête GET au serveur du blog pour obtenir l'article.

  • POST est utilisée pour envoyer des données.

    Si vous remplissez un formulaire en ligne, cette information est souvent envoyée au serveur via une requête POST.

Envoi des données d'un formulaire

Bien que POST soit généralement utilisé pour envoyer des données à partir d'un formulaire en raison de sa capacité à transmettre une grande quantité d'informations de manière sécurisée dans le corps de la requête,

GET peut aussi être utilisé pour envoyer des données d'un formulaire, mais il le fait en ajoutant les données dans l'URL. Cela est moins sécurisé et convient mieux aux demandes de données simples et non sensibles, car les informations sont visibles dans l'URL et peuvent être limitées en taille.

Exemples d'envoi de données d'un formulaire, avec GET ou POST

Exemple n°1 avec la méthode GET :

Lorsqu'un formulaire est soumis avec la méthode GET, les données du formulaire sont ajoutées à l'URL sous forme de paires clé-valeur, séparées par des &, après un ?.

URL :

http://www.exemple.com/recherche?query=chat&lang=fr

Entête HTTP :

GET /recherche?query=chat&lang=fr HTTP/1.1
Host: www.exemple.com
User-Agent: Mozilla/5.0 (compatible; ...)
Accept: text/html,application/xhtml+xml
...

Dans cet exemple, un utilisateur recherche le mot "chat" sur un site francophone. Les données du formulaire (query=chat&lang=fr) sont directement incluses dans l'URL.


Exemple n°2 avec la méthode POST :

Lorsqu'un formulaire est soumis avec la méthode POST, les données du formulaire sont incluses dans le corps (body) de la requête, et non dans l'URL.

URL :

http://www.exemple.com/inscription

Entête HTTP :

POST /inscription HTTP/1.1
Host: www.exemple.com
User-Agent: Mozilla/5.0 (compatible; ...)
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
Accept: text/html,application/xhtml+xml
...

username=alice&password=secret

Ici, l'utilisateur "alice" s'inscrit avec un mot de passe "secret". Les données du formulaire (username=alice&password=secret) sont placées dans le corps de la requête HTTP, et non dans l'URL. L'entête Content-Length indique la taille du corps de la requête, et Content-Type indique le type de média des données dans le corps de la requête.

Notez que ces 2 exemples sont simplifiés et que les entêtes HTTP réels contiennent généralement plus d'informations. De plus, pour des raisons de sécurité, les mots de passe et autres données sensibles ne doivent jamais être envoyés en clair comme dans l'exemple POST ci-dessus ; ils devraient être chiffrés et transmis via une connexion sécurisée (HTTPS).

astuce

GET et POST sont 2 méthodes de requête définies par le protocole HTTP.

  • La méthode GET est conçue pour demander des données du serveur, et elle transmet les paramètres de la requête directement dans l'URL.
  • La méthode POST, en revanche, est utilisée pour envoyer des données au serveur, en incluant les données dans le corps de la requête, ce qui permet d'envoyer des quantités de données plus importantes et de manière plus sécurisée que dans l'URL.

Ces 2 méthodes définissent la nature de l'action demandée par le client HTTP (généralement le navigateur) et la façon dont le serveur doit y répondre.

Code de statut HTTP

Un code de statut HTTP est un code numérique à 3 chiffres envoyé par le serveur HTTP pour indiquer l'état de sa réponse.

Ces codes de statut sont définis par la RFC 7231 et sont regroupés en cinq classes, où le premier chiffre du code indique la classe de réponse :

  • 1xx (Informational) : Indique que la requête a été reçue et que le processus continue.
  • 2xx (Success) : Signifie que la requête a été reçue, comprise et acceptée avec succès.
  • 3xx (Redirection) : Indique que des actions supplémentaires doivent être prises pour compléter la requête.
  • 4xx (Client Error) : Signale une erreur du côté du client, telle qu'une mauvaise requête ou une ressource non trouvée.
  • 5xx (Server Error) : Signifie qu'une erreur s'est produite sur le serveur et que la requête n'a pas pu être traitée.
Exemples de code de statut HTTP

  • Si un client reçoit un code 200 OK, cela signifie que tout s'est bien passé, et le client peut procéder à l'affichage des données ou à la confirmation de l'action réussie.
  • Si le client reçoit un code 301 Moved Permanently, cela indique que la ressource demandée a été déplacée de façon permanente à une nouvelle URL, et le client peut automatiquement rediriger vers cette nouvelle adresse.
  • Un code 404 Not Found informe le client que la ressource demandée n'existe pas, et le client peut en informer l'utilisateur, souvent à travers une page d'erreur personnalisée.
  • Si un code 500 Internal Server Error est reçu, cela signifie que le serveur a rencontré une condition inattendue qui l'a empêché de répondre à la requête. Le client peut alors afficher un message d'erreur général et tenter de renvoyer la requête ultérieurement.

Les codes de statut HTTP sont un élément essentiel de la communication sur le Web, car ils fournissent une méthode standardisée pour les serveurs et les clients pour communiquer l'état d'une requête et la façon de la gérer.

Exemple pratique

Imaginons que vous cherchez un livre dans une bibliothèque en ligne :

  • Vous utilisez une requête GET pour rechercher des informations sur le livre. Vous pourriez entrer le titre du livre dans la barre de recherche, et la bibliothèque vous renvoie une liste de résultats.
  • Si vous décidez de réserver ce livre, vous pourriez utiliser une requête POST pour soumettre le formulaire de réservation. La bibliothèque enregistre votre demande et vous répond si la réservation est confirmée.

Test de mémorisation/compréhension


Quelle requête HTTP est généralement utilisée pour envoyer des données d'un formulaire ?


Quel protocole est utilisé pour échanger des données sur le Web ?


Quelle méthode HTTP votre navigateur utilise-t-il pour demander une page Web ?


Installer le logiciel "Postman"

Pour bien comprendre et pratiquer les requêtes HTTP nous allons utiliser Postman, un outil populaire pour tester les API.

Téléchargez et installez Postman depuis le site officiel : https://www.postman.com


TP pour explorer l'API de "Wikipedia"

Nous allons commencer par une requête HTTP, toute simple, avec la méthode GET et sans utiliser une clé d'API.

  1. Ouvrez Postman

  2. Créez une nouvelle requête.

  3. Dans l'onglet "Request", sélectionnez la méthode "GET".

  4. Entrez l'URL d'une API publique qui ne nécessite pas d'authentification (par exemple, l'API de Wikipedia).

L’API de Wikipédia

L’API de Wikipédia est une API REST publique, très complète et bien documentée qui permet de nombreuses opérations différentes :

  • sur les pages (créer, éditer, supprimer une page, changer sa langue ...)

  • et sur les comptes (créer, bloquer, éditer un utilisateur et ses permissions ...).

  • Documentation de l'API de Wikipedia : https://www.mediawiki.org/wiki/API:Main_page/fr

  1. Saisissez ce endpoint : https://fr.wikipedia.org/w/api.php

  2. Dans l'onglet 'Params', saisissez les paires de clé/valeur suivantes :

  • action=query
  • titles=Terre
  • prop=extracts
  • exchars=500
  • explaintext
  • utf8
  • format=json
  1. Envoyez la requête et observez la réponse.
Une solution

TP pour explorer l'API de "OpenLibrary"

Nous allons réaliser une autre requête HTTP toujours sans utiliser une clé d'API.

  1. Ouvrez Postman

  2. Créez une nouvelle requête.

  3. Dans l'onglet "Request", sélectionnez la méthode "GET".

  4. Entrez l'URL d'une API publique qui ne nécessite pas d'authentification (par exemple, l'API de Wikipedia).

L’API de OpenLibrary

L’API de OpenLibrary est une API REST publique, très complète et bien documentée qui permet de nombreuses opérations différentes pour consulter des informations sur les livres du monde entier.

  1. Saisissez ce endpoint : https://openlibrary.org/isbn/9782206306988

  2. Dans l'onglet 'Headers', saisissez la paire de clé/valeur suivante :

  • accept=application/json
  1. Envoyez la requête et observez la réponse.

Corrigé du TP :

Une solution