Ce que tu vas faire
Dans « Les bases des API », tu as lu des notes et tu en as ajouté. Une API web fait quatre choses avec les données : créer, lire, modifier et supprimer, chacune par un autre type de requête. Ici, tu fais modifier et supprimer : changer une note et en supprimer une. Tu regardes aussi le code de statut que l’API renvoie à chaque fois : un nombre qui dit comment ça s’est passé.
Avant de commencer
Remarque
Appuie sur Démarrer le lab dans la barre en haut de la leçon et attends qu’elle indique que le lab tourne. Le premier démarrage prend quelques secondes, car 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 les tiennes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.
1. Vérifier qu’il y a des notes à modifier
Ces commandes créent la table notes si « Les bases des API » ne l’a pas déjà fait, y mettent deux notes, et disent à l’API de relire la base. Si tu as fait la première leçon, la table existe déjà : psql te le dit avec un NOTICE, mais il continue et ajoute deux notes de plus. Ce n’est pas grave. ?order=id liste les notes dans l’ordre de leur id, et -w "\n" termine la réponse par un retour à la ligne pour qu’elle s’affiche sous la commande.
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 if not exists 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.
psql -h db -U shop -c "insert into notes (body) values ('one'), ('two')"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.
curl -s -w "\n" "http://api:3000/notes?order=id"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. Modifier une note
Une requête PATCH change une partie d’une ligne. ?id=eq.1 dit laquelle : la ligne dont l’id est égal à 1. L’API répond 204, ce qui veut dire « c’est fait, et il n’y a rien à renvoyer ». Relis la table : la note a changé.
curl -s -o /dev/null -w "%{http_code}\n" -X PATCH -H "Content-Type: application/json" -d '{"body":"changed"}' "http://api:3000/notes?id=eq.1"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.
curl -s -w "\n" "http://api:3000/notes?id=eq.1"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. Supprimer une note
Une requête DELETE supprime les lignes qui correspondent, ici celle dont l’id est 2. Encore 204. Relis la table : la note a disparu.
curl -s -o /dev/null -w "%{http_code}\n" -X DELETE "http://api:3000/notes?id=eq.2"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.
curl -s -w "\n" "http://api:3000/notes?order=id"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.
4. Lire les codes de statut
Chaque réponse commence par un code de statut. 200 veut dire « voilà », 201 « je l’ai créé », 204 « c’est fait » et 404 « cela n’existe pas ». Demande une table qui n’existe pas et tu obtiens un 404 ; demande celle qui existe et tu obtiens un 200.
curl -s -o /dev/null -w "%{http_code}\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.
curl -s -o /dev/null -w "%{http_code}\n" http://api:3000/nothingAffiché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.
Pour les enseignants
Astuce
Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie personnelle de chaque élève. Elle utilise le même lab base de données et API que « Les bases des API ». La base garde ses fichiers dans un volume que la plateforme sauvegarde : les notes de l’élève sont donc encore là la fois suivante. Copiez-la dans votre propre module et modifiez-la, ou créez-en une de zéro avec le menu Lab du créateur de leçons.