La requête

La requête est ce que construit le navigateur pour demander ou passer une information au serveur. Venez découvrir tous les secrets de cet élément central du web.

Auteur :
Jonathan Marco
Difficulté :
Initiation au rêve (débutant)

La requête est un des deux versants de la relation client-serveur. Comme on a vu dans les chapitres précédents, elle est construite par le navigateur et est envoyée au serveur. Elle va représenter la demande en détail qui est faite à ce dernier et elle va contenir beaucoup d'informations sur le demandeur.

Elle est composée de trois parties :

  • La signature de la requête,
  • Les entêtes de la requête,
  • Le corps de la requête.

La signature

La signature est elle-même composée de trois parties :

  • La méthode appelée le "VERBE",
  • La ressource demandée,
  • La version du protocole HTTP.

Exemple :

 GET /contact/admin.html HTTP/1.1

La méthode

Elle est composé d'un verbe qui va déterminer la nature de se qu'on demande au serveur. Les deux principaux sont : GET et POST :

  • GET va faire une requête de type : "demande d'informations". On requête le serveur pour qu'il nous envoie des ressources : un utilisateur, une liste d'articles...
  • POST est associé à des informations qu'on possède et qu'on souhaite transmettre, via le corps de la requête, au serveur. Le serveur pourra ensuite les traiter : les stocker en base de données, les envoyer par mail, faire des calculs...
On peut considérer que ces deux méthodes sont les principales, car elles sont utilisables directement avecHTML via les formulaires.

À ces deux verbes principaux, on ajoute les suivants :

  • DELETE : va faire une demande de suppression d'une et de plusieurs données au serveur.
  • PATCH : fait une demande de modification d'une ressource sur le serveur.
  • PUT : fait une demande de remplacement d'une donnée au serveur. 
Attention ! PATCH et PUT sont très proches, mais l'un modifie un élément existant, l'autre le supprime pour le remplacer entièrement. 
Ces trois méthodes sont des verbes "avancés", car ils sont disponibles pour les développeurs via des langages comme Javascript et non directement via le HTML comme GET et POST. Ils ne sont qu'un moyen de transmettre ses intentions à l'application qui se trouve sur le serveur. Ils ne seront pas un injonction à faire quelque chose. Même si la requête est envoyée avec le verbe DELETE, le serveur ne sera pas obligé de faire une suppression, c'est au développeur qui créera l'application sur le serveur, qui répondra à la requête, de déterminer son comportement.

Documentation : Méthodes de requête HTTP

La ressource demandée

Elle correspond à l'URL de cette ressource. On peut avoir deux types de chemin :

  • comme dans l'exemple : /contact/admin.html. Le serveur part du dossier racine du projet, il se rend dans le sous-dossier "contact" et cherche le fichier "admin.html".
  • ou dans une URL du type : /articles/3. Ce type d'adresse est issue d'une technique qu'on appelle la "réécriture d'URL", technique qu'on verra dans un chapitre dédié. Elle permet d'avoir des URL propres, plus optimisées pour le référencement dans les navigateurs, et décorrélées de la structure du projet, ce qui permet une plus grande sécurité car l'URL ne trahit pas où se trouve quelle ressource.

Une fois que le fichier a été localisé, le serveur l'ouvrira, chargera son contenu et celui de ses dépendances, avant de compiler le tout et de l'envoyer au client via la réponse qu'on verra au chapitre suivant.

La version

La version majoritaire du HTTP est la 1.1 et ce depuis la fin des années 90. Le protocole a peu évolué depuis sa création fin des années 80. Une nouvelle version majeure a été validée en 2015. Elle est encore en cours d'adoption mais ne représente aujourd'hui (août 2023) que 36% du web. Cette version permet une plus grande sécurité des échanges, des performances bien meilleures, mais n'est pas encore implémentée partout.

Les entêtes de requête

Ces entêtes permettent de mettre du contexte à cette requête.

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: fr,en;q=0.9,en-US;q=0.8,fr-FR;q=0.7,de;q=0.6,ar;q=0.5
Connection: keep-alive
Host: api.jojotique.fr
Origin: https://www.jojotique.fr
Referer: https://www.jojotique.fr/
sec-ch-ua: "Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36

On voit ici que :

  • notre requête a comme origine le site "Origin: https://www.jojotique.fr"
  • qu'on appelle le serveur "Host: api.jojotique.fr"
  • qu'on accepte en langage pour la réponse le JSON : "application/json", le texte brute : "text/plain" ou tout le reste "*/*"
C'est, entre autre, sur ces headers que se basent les logiciels comme Matomo ou Google Analytics pour faire de l'analyse de traffic sur les sites web.

Le corps de la requête

Le corps de la requête est un dictionnaire contenant les valeurs que l'on souhaite transmettre au serveur. Dans le cadre d'une requête résultante de l'envoi d'un formulaire, les clés correspondront aux noms des champs et les valeurs aux données entrées dans les champs du formulaire.

Il est écrit dans la définition de l'objet request que lorsqu'on utilise une requête de type GET, il n'est pas possible de transmettre des informations via le corps de la requête au risque qu'elle soit refusée par le serveur.
  • Cours
  • Tutoriels
  • Aide
  • À Propos