• 6 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 09/07/2018

Les requêtes

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Une requête est un message qui va du client au serveur. Elle est structurée de la manière suivante :

La structure d'une requête
La structure d'une requête

Première ligne (HTTP)

La première ligne d’une requête HTTP comportera toujours les éléments suivants si vous utilisez une API ou vous visitez tout simplement un site web dans votre explorateur.

VERBE HTTP /file_path.html HTTP/X.X

Verbe HTTP : Vous verrez une liste des verbes et leurs usages dans le chapitre Méthodes. Le verbe que vous utiliserez va déterminer l’interaction avec le serveur : est-ce que vous allez récupérer un fichier, envoyer des données avec, modifier un objet existant, ou autre chose ? Choisissez grâce à votre verbe !

Fichier : Le fichier que vous indiquez ici, précédé de son arborescence, sera récupéré par le serveur.

HTTP : la version d’HTTP que vous utilisez est toujours envoyée dans la première ligne de la requête. La version que vous verrez le plus souvent est HTTP/1.1.

Les en-têtes

Sous la première ligne de la requête, vous trouverez l’en-tête de la requête. Les en-têtes sont là pour donner des informations sur l’échange, souvent sur le client qui fait la requête. Bien sûr, vous pourriez n'envoyer que la première ligne, vous recevriez quand même une réponse du serveur, mais il vaut mieux utiliser l'en-tête pour être sûr de recevoir un contenu approprié.

Ici quelques exemples du contenu d'un en-tête :

Date

Elle indique quand le client a effectué sa demande. Cette date sera au format de date HTTP (jour de la semaine, jour, mois, an, heure en Temps Moyen de Greenwhich). Par exemple : 

Date: Tue, 19 Jan 2016 18:15:41 GMT

Referer

Cela indique la précédente localisation du client. Par exemple : 

Referer: https://www.google.fr/

User agent

Indique l'application utilisée par le client, ainsi que sa version. Par exemple :

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)

User language

Renseigne sur la langue utilisée par le client dans son application. Le contenu sera envoyé dans cette langue s’il existe. Par exemple : 

Accept-Language: en-us,en;q=0.8

Cookies

Est-ce que le client a déjà des cookies des requêtes avant ? Si oui ils font partie des en-têtes. Par exemple : 

Cookie: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (chaîne alphanumérique)

En général, il n'est pas nécessaire d’envoyer beaucoup d’en-têtes avec une requête HTTP. Renseigner tous les champs serait trop lourd ! C’est vrai que certains en-têtes sont utiles pour des clients qui visitent des sites dans leurs explorateurs, mais les autres sont plus importants pour des requêtes API comme des formats fichier acceptés et des infos sur la date de la requête.

Voici la liste complète des en-têtes HTTP possibles !

Accept
Accept-Charset
Accept-Encoding
Accept-Language
Accept-Datetime
Authorization
Cache-Control
Connection
Cookie
Content-Length
Content-MD5
Content-Type
Date
Expect
Forwarded
From
Host
If-Match
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Origin
Pragma
Proxy-Authorization
Range
Referer [sic]
TE
User-Agent
Upgrade
Via
Warning

Vous pouvez trouver plus d’infos sur les en-têtes sur le site de W3C

Corps

Après les en-têtes, vient le corps de la requête. Là-dedans vous aurez des détails selon la nature de la requête. Par exemple, si une requête envoie des données à une API avec POST (que vous allez voir dans le chapitre Méthodes) les attributs seront envoyés dans ce corps. Il n’y a pas toujours de corps dans une requête ! Cela dépend de la méthode HTTP que vous utilisez.

Ici un exemple GET pour openclassrooms.com/paths. Prenez quelques minutes pour comprendre chaque ligne en considérant les explications dans ce chapitre !

GET /paths HTTP/1.1

Host: openclassrooms.com:443

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Encoding: gzip, deflate, sdch

Accept-Language: en-US,en;q=0.8

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36
Exemple de certificat de réussite
Exemple de certificat de réussite