Qui fait quoi lors d'une requête HTTP ?
#1 Introduction
Ce tutoriel est le premier d'une série qui est une introduction dans laquelle je vais vous présenter les principales technologies du web.
La liste n'est pas exhaustive, loin de là. Les technos sont nombreuses. C'est un monde très riche et très évolutif. Mais ici, on va s'intéresser uniquement aux technologies de base. Celles qui sont incontournables et que vous retrouvez partout. On trouve des langages, des services et des protocoles.
Pour essayer de s'y retrouver, on va faire une manip de base, on va prendre un navigateur et on va demander une page web.
Et on va se poser la question : Qu'est-ce qui va se passer ?
Le navigateur envoie une requête HTTP vers le serveur sur lequel est hébergée la page du site internet auquel je veux accéder.
Ce serveur va renvoyer vers le navigateur de ma machine la page que je lui ai demandée. Cet envoi prend la forme d'un envoi de fichiers qui contiennent du code écrit dans différents langages. On va avoir quasi systématiquement :
- Du HTML qui est un langage qui va servir à décrire la structure de la page, par exemple permettre d'identifier ce qui est un titre, ce qui est un tableau, etc.
- Du CSS qui est un langage qui va servir à gérer le rendu visuel de la page. Par exemple, ce titre est bleu, ce tableau est centré.
- Du JavaScript qui est un langage qui va servir à gérer l'interactivité avec l'internaute, c'est-à-dire en gros répondre aux 'clics' produits par l'internaute. Sur certains clics, JavaScript se servira d'AJAX pour communiquer avec le serveur. Il ira chercher des données sur le serveur et s'en servira pour modifier le document de manière dynamique.
#2 Qu'est-ce qu'on entend par serveur ?
Le serveur peut désigner la machine au sens hardware, mais il peut aussi désigner des programmes qui tournent sur cette machine.
On en a l'illustration ici. Quand je pose la question : qu'est-ce qui se passe au niveau du serveur ? Sans rien préciser et bien je parle je la machine. Lorsque je précise au niveau du schéma 'serveur HTTP' ou 'serveur MySQL', là il s'agit de programmes. Ces programmes sont appelés serveurs, car ils répondent aux requêtes de programmes clients, autrement dit, ils les servent.
Le plus souvent, la différence est assez facile à faire en fonction du contexte.
#3 Retour au traitement de notre requête côté serveur
Là deux cas sont possibles :
- Je commence par le cas le plus simple. La page HTML que je demande est déjà prête et stockée sur le système de fichiers du serveur. Le serveur va aller la chercher et renvoyer le code HTML au navigateur.
- Dans le deuxième cas, un peu plus compliqué. Je suppose que je demande une page qui a besoin d'être fabriquée à partir de données qui sont en base de données. Cette page n'existe pas au format HTML sur le système de fichiers du serveur. Par contre, les informations nécessaires à sa fabrication sont stockées dans la base de données par MySQL. Dans ce cas, c'est le PHP qui va être sollicité pour interroger MySQL, récupérer les informations et 'fabriquer' le code HTML de la page en temps réel. Ensuite, comme dans le premier cas, le code HTML est envoyé au navigateur.
MySQL est un gestionnaire de base de données. Il sert à stocker, ranger et trier des données. C'est un service (un programme) qui tourne sur le serveur.
PHP est un langage de programmation. Le code PHP est inséré dans du code HTML. PHP s'interface avec MySQL, c'est-à-dire qu'il fait des requêtes à MySQL pour fournir ou récupérer des données. Ensuite, PHP se sert des données pour générer du code HTML et ainsi fabriquer la page à la demande.