La particularité du Web est qu'elle réside sur une architecture client-serveur.
Ceci requiert une connectivité permanente mais donne également énormément de possibilités.
Par exemple, ChatGPT requiert une puissance de calcul gigantesque (258 000 cores de processeurs pour GPT-3) mais est accessible via n'importe quel ordinateur ou smartphone.
Programme qui effectue des requêtes HTTP pour accéder à un service ou une ressource fourni par un serveur.
Par abus de langage, nous utiliserons parfois le terme client pour désigner l'ordinateur sur lequel tourne le navigateur.
Le serveur est un programme qui écoute sur le réseau et qui répond aux requêtes HTTP des clients.
Analogie douteuse: cuisiniers du McDonalds
Le protocole HTTP est le standard qui dictent comment serveurs et clients communiquent.
Clients et serveurs communiquent par message structuré (première ligne, l'en-tête, corps).
Voici les principales méthodes HTTP
Pour plus de détails, vous pouvez visiter la documentation
Ceci est ce qui se passe en théorie. En pratique, le programmeur backend n'est pas obligé d'honorer ces conventions.
Pour plus d'information, consultez la documentation
Une requête GET est une demande faite par un client au serveur de consulter une ressource à une URL donnée. Le serveur y répond ou renvoie une erreur.
Une requête POST est utilisée par un client pour envoyer des données supplémentaires au serveur.
Le protocole HTTP est comme Dory, il oublie les requêtes des clients dès qu'il les a traitées.
Le protocole HTTP est stateless: les requêtes sont traitées indépendemment des requêtes précédentes et les communications sont coupées dès qu'elles sont terminées.
Le client doit rappeler à chaque requête qui il est via ce qu'on appelle des cookies (dans quelques slides)
L'idée des cookie est que le client rappelle au serveur qui il est à chaque requête parce que le serveur a oublié (une promenade en mer, une promenade en mer).
Un cookie est un bloc de données créé par le serveur et utilisé pour les requêtes suivantes jusqu'à son expiration.
Comment implémenter l'authentification si le protocole est stateless?
Le tracking est le business model du Web. Les géants du Web ont pratiquement votre historique complet.
La sécurité du Web fonctionne sur la cryptographie asymétrique.
Les requêtes HTTP sont lisibles par toute personne qui se trouve sur le réseau entre le client et le serveur. En particulier, une personne peut lire vos mots de passe et données bancaires.
Il existe plusieurs manières de créer un site ou une application web. La décision qui différencie ces architectures est la répartition du travail entre serveur et client.
Dans un site statique, le serveur ne traite généralement que les requêtes GET. Les chemins de l'URL font référence à un chemin sur le disque dur du serveur relativement à un dossier racine.
En particulier, on n'a pas accès à des base de données, on ne peut pas traiter de formulaires, etc.
Pour fournir une expérience personnalisée à l'utilisateur, nous voulons que la page soit potentiellement différente pour chaque utilisateur. On parle alors d'application.
Une application web utilise un programme pour répondre aux requêtes.
Nous distinguerons deux types d'application:
La distinction SPA/MPA se fait sur le nombre de pages que comporte l'application.
Ce critère n'est pas aussi simple qu'il en a l'air, puisque les SPA font souvent semblant de se comporter comme des MPA. Les applications plus complexes et plus interactives ont tendance à être des SPA.
Le but d'une SPA est de se comporter plus comme un "vrai" programme natif, et d'éviter les rechargements complets de page.
Un argument clé pour l'emloi de l'usage des SPA est qu'elles sont faciles à créer avec des frameworks (comme React, Svelte, Angular, etc.)
Dans une SPA, vous remarquerez que votre navigateur change d'URL mais pas de page. Pourquoi?
Regardez vos conversations dans Facebook ou instagram. Rechargez la page. Ensuite faites la même chose avec WhatsApp Web. Que remarquez-vous?
Cette technique s'appelle le client-side routing: on emploie le JavaScript pour faire semblant de changer de page.
Que s'est-il passé en 2016?
Au premier rendu, l'application renvoie une "shell page", c'est-à-dire une page blanche que avec du JavaScript. Ceci a une consequence pour le SEO. Remarquons également qu'il y a plusieurs aller-retours pour la première requête.
Serait-il possible d'avoir le meilleur des deux mondes et de combiner les avantages des SPA et des MPA?
Le JavaScript est un langage de programmation qui peut s'exécuter côté serveur et côté client. On laisserait les deux côtés s'occuper du rendu.
Chaque fois qu'on résoud un problème en frontend, on en crée un nouveau. Le SSR crée le problème de l'hydration, une période durant laquelle la page est affichée mais pas interactive.
Ce problème n'est pas encore résolu de manière satisfaisante, bien qu'il existe des projets prometteurs tels que Qwik ou Astro