HTTP

HTTP (HyperText Transfer Protocol) est un protocole de communication client-serveur. Il est utilisé pour transférer des données sur le web. Il est basé sur le modèle requête-réponse. Il utilise le protocole TCP (Transmission Control Protocol) pour établir une connexion entre le client et le serveur.

Protocole

HTTP est un protocole sans état, ce qui signifie que chaque requête est traitée indépendamment des autres. Cela signifie que le serveur ne conserve pas d'informations sur les requêtes précédentes.

Une requête HTTP est composée de plusieurs parties :

  • Ligne de requête : contient la méthode, l'URI et la version du protocole.
  • En-têtes : contiennent des informations supplémentaires sur la requête.
  • Corps : contient les données de la requête.

Une réponse HTTP est également composée de plusieurs parties :

  • Ligne de statut : contient la version du protocole, le code de statut et le message de statut.
  • En-têtes : contiennent des informations supplémentaires sur la réponse.
  • Corps : contient les données de la réponse.

Méthodes HTTP

Il existe plusieurs méthodes HTTP, les plus courantes sont :

  • GET : récupère des données à partir du serveur.
  • POST : envoie des données au serveur pour traitement.
  • PUT : met à jour des données sur le serveur.
  • DELETE : supprime des données sur le serveur.

Il existe d'autres méthodes comme HEAD, OPTIONS, PATCH, etc.

Ces méthodes sont des conventions pour indiquer au serveur ce qu'il doit faire avec la requête, mais elles ne sont pas strictement suivies par tous les serveurs.

Codes de statut HTTP

Les codes de statut HTTP sont des codes numériques qui indiquent le résultat de la requête. Les codes de statut sont divisés en cinq catégories :

  • 1xx : Informationnel
  • 2xx : Succès
  • 3xx : Redirection
  • 4xx : Erreur du client
  • 5xx : Erreur du serveur

Les codes de statut les plus courants sont :

  • 200 OK : la requête a réussi.
  • 201 Created : la ressource a été créée avec succès.
  • 400 Bad Request : la requête est incorrecte.
  • 401 Unauthorized : l'accès à la ressource est refusé.
  • 404 Not Found : la ressource demandée n'a pas été trouvée.
  • 500 Internal Server Error : une erreur interne du serveur s'est produite.

Exemple de requête HTTP GET

Voici un exemple de requête HTTP GET :

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

Dans cet exemple, le client envoie une requête GET pour récupérer le fichier index.html sur le serveur www.example.com. User-Agent indique le navigateur utilisé par le client, et Accept indique le type de contenu accepté par le client.

Voici a quoi pourrait ressembler une réponse :

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 84

<!DOCTYPE html>
<html>
<head>

</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>

Dans cet exemple, le serveur envoie une réponse avec le code de statut 200 OK et le contenu HTML de la page. Content-Type indique le type de contenu de la réponse, et Content-Length indique la longueur du contenu en octets.

Exemple de requête HTTP POST

Voici un exemple de requête HTTP POST :

POST /login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Content-Length: 45

{ "username": "johndoe", "password": "1234" }

Dans cet exemple, le client envoie une requête POST pour se connecter au serveur www.example.com sur la route /login. Le corps de la requête contient les informations de connexion de l'utilisateur au format JSON. On précise le type de contenu avec Content-Type et la longueur du contenu avec Content-Length.

Voici a quoi pourrait ressembler une réponse :

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 52

{ "message": "Login successful", "token": "abc123" }

Exemple de réponse HTTP avec erreur

Voici un exemple de réponse HTTP avec une erreur :

HTTP/1.1 404 Not Found
Content-Type: text/plain
Content-Length: 13

Page not found

Dans cet exemple, le serveur envoie une réponse avec le code de statut 404 Not Found et le message Page not found.

Conclusion

HTTP est un protocole de communication client-serveur largement utilisé sur le web. Il permet de transférer des données de manière fiable et sécurisée entre les clients et les serveurs. Il est important de comprendre les méthodes HTTP, les codes de statut et les en-têtes pour développer des applications web efficaces et robustes.