Ce que tu vas faire
Une base de données garde des informations dans des tables. Une API web permet à un programme de demander ces informations par le web. Tu crées une table dans une vraie base de données. Ensuite, tu la lis et tu la modifies avec des requêtes web envoyées par curl, comme une application de téléphone qui parle à un serveur.
Avant de commencer
Remarque
Appuie sur Démarrer le lab dans la barre en haut de cette leçon et attends que la barre indique que le lab tourne. Le premier démarrage prend quelques secondes, parce que la base de données démarre d’abord. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l’une après l’autre, dans la même session. Pour les voir passer, ou pour taper tes propres commandes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.
1. Crée une table
La base de données s’appelle shop. Cette commande crée une table nommée notes, avec deux colonnes : un id qui augmente tout seul, et le texte body de chaque note. PGPASSWORD contient le mot de passe, donc on ne te le demande pas.
export PGPASSWORD=shopAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
psql -h db -U shop -c "create table notes (id serial primary key, body text not null)"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
2. Mets une note dedans
insert ajoute une ligne. La deuxième commande dit à l’API de relire la base de données. L’API l’a lue une seule fois, au démarrage, avant que notes existe.
psql -h db -U shop -c "insert into notes (body) values ('hello')"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
psql -h db -U shop -c "notify pgrst, 'reload schema'"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
3. Lis-la par le web
L’API donne une adresse web à la table. curl la demande, et la réponse revient en JSON, un format de texte que les programmes lisent facilement : [{"id":1,"body":"hello"}]. -w "\n" termine la réponse par un saut de ligne, pour qu’elle s’affiche seule sur sa ligne sous la commande.
curl -s -w "\n" http://api:3000/notesAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
4. Ajoute une note par le web
Une requête POST ajoute une ligne. La partie -d est la nouvelle note, en JSON. Ensuite, lis à nouveau la table : il y a maintenant deux notes.
curl -s -X POST -H "Content-Type: application/json" -d '{"body":"from curl"}' http://api:3000/notesAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
curl -s -w "\n" http://api:3000/notesAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
5. Demande moins
Des mots ajoutés à l’adresse demandent une partie de la table. Cette requête demande seulement la note dont le body est égal à hello.
curl -s -w "\n" "http://api:3000/notes?body=eq.hello"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
6. Vois ce qui est conservé
Appuie sur Arrêter le lab dans la barre du lab, puis sur Démarrer le lab, et exécute à nouveau l’étape 3 : tes notes sont toujours là. La base de données garde ses fichiers dans un volume nommé, et la plateforme sauvegarde ce volume. Tout ce que tu écris en dehors d’un volume est perdu quand le lab s’arrête. Les conteneurs en production se comportent de la même façon.
Pour les enseignants
Astuce
Cette leçon est un petit exemple de leçon à faire dans un lab : les étapes et les boutons Exécuter forment la leçon, et le lab est la copie personnelle de chaque élève. Le lab se compose de deux services, une base de données et une API, qui se trouvent par leur nom : c’est à quoi ressemble une vraie application. Copiez cette leçon dans votre propre module et modifiez-la, ou créez-en une à partir de zéro avec le menu Lab du créateur de leçons.