Configuration du Backend

Backend
Database
CRUD
Créez une API backend avec des endpoints pour gérer les livres : opérations de création, lecture, modification et suppression avec une base de données.
CRUD de bibliothèque (Épisode 1)
Retour à l'Académie

Base de données et CRUD

Résumé express : Créer une base de données complète avec opérations CRUD (Create, Read, Update, Delete) pour gérer une liste de livres avec Luna Park.


1. Architecture du projet

  1. Créer deux dossiers distincts :
    • Backend : pour la base de données et les routes
    • Frontend : pour l'interface utilisateur

Dans ce tutoriel, nous commençons par le backend.

2. Création de la base de données

Initialiser la base

  1. Créer une nouvelle base de données nommée db-books
  2. La base contient par défaut :
    • ID : identifiant unique
    • created_at : date de création automatique

Ajouter des colonnes personnalisées

  1. Ajouter une colonne title (type : string)
  2. Ajouter une colonne author (type : string)
  3. Ajouter quelques rows (lignes) avec des données de test

En 15 secondes, votre base de données est prête à l'emploi !

3. Routes API - Concept général

Les routes sont des URL qui permettent de :

  • Récupérer des données (GET)
  • Envoyer de nouvelles données (POST)
  • Modifier des données existantes (PUT)
  • Supprimer des données (DELETE)

Nous allons créer 4 routes correspondant aux opérations CRUD.

4. Route GET - Récupérer tous les livres

Créer la route get-books

  1. Créer une nouvelle route nommée get-books
  2. Définir la méthode : GET

Méthode simple : dbfind

  1. Créer un node dbfind
  2. Sélectionner la table db-books
  3. Le résultat renvoie un tableau de rows (lignes)
  4. Connecter le résultat à la réponse
  5. Relier le fil d'exécution entre dbfind et la route
  6. Tester avec Execute et Ctrl+Espace pour visualiser

Méthode avancée : dbfrom avec query

  1. Créer un node dbfrom
  2. Sélectionner la table db-books
  3. Ajouter un select pour choisir les champs :
    • id
    • title
    • author
  4. Ajouter un dbexecute
  5. Tester avec Ctrl+Espace
  6. Connecter le résultat à la réponse

Typer la réponse (bonne pratique)

  1. Définir le type de réponse attendu :
    • Tableau d'objets
    • Chaque objet contient : id, title, author
  2. Avantage : vérification automatique du type
  3. Si un champ manque ou est en trop → erreur missingProperty

5. Route POST - Créer un nouveau livre

Créer la route create-books

  1. Créer une nouvelle route nommée create-books
  2. Vérifier que la méthode est POST

Définir le body (données entrantes)

Dans Route Input, ajouter un body contenant :

  • title (string) : titre du livre
  • author (string) : auteur du livre

Ces données viendront des inputs du frontend

Insérer dans la base

  1. Tirer un fil depuis le body
  2. Créer un node dbinsert
  3. Sélectionner la table db-books
  4. Connecter le body au champ data

Renvoyer l'état mis à jour (optionnel mais recommandé)

  1. Ajouter un dbfind après l'insertion
  2. Sélectionner la table db-books
  3. Connecter le résultat à la réponse
  4. Copier le type de réponse depuis get-books (clic droit → copier)
  5. Coller dans la réponse de create-books

6. Route DELETE - Supprimer un livre

Créer la route delete-books

  1. Créer une nouvelle route nommée delete-books
  2. Changer la méthode en DELETE
  3. Coller le type de réponse (même que get-books)

Définir l'ID à supprimer

Dans Route Input, ajouter un body contenant :

  • id (string) : identifiant du livre à supprimer

Supprimer par ID

  1. Tirer un fil depuis delete-books
  2. Créer un node delete by ID
  3. Sélectionner la table db-books
  4. Connecter l'ID :
    • Tirer un fil depuis le body
    • Créer un get property
    • Sélectionner la propriété id
    • Connecter au champ ID du delete by ID

Renvoyer l'état mis à jour

  1. Ajouter un dbfind après la suppression
  2. Sélectionner la table db-books
  3. Connecter le résultat à la réponse

7. Route PUT - Modifier un livre existant

Créer la route update-books

  1. Créer une nouvelle route nommée update-books
  2. Changer la méthode en PUT
  3. Coller le type de réponse

Définir le body

Dans Route Input, ajouter un body contenant :

  • id (string) : livre à modifier
  • title (string) : nouveau titre
  • author (string) : nouvel auteur

Mettre à jour par ID

  1. Tirer un fil depuis update-books
  2. Créer un node DBUpdateByID
  3. Sélectionner la table db-books

Gérer les données d'update

  1. Pour l'ID :

    • Créer un spread depuis le body
    • Sélectionner id
    • Connecter au champ ID
  2. Pour les données à modifier :

    • Créer un create object
    • Ajouter les propriétés title et author
    • Créer un spread depuis le body
    • Connecter title et author à l'objet
    • Connecter l'objet au champ update

Renvoyer l'état mis à jour

  1. Ajouter un dbfind après la mise à jour
  2. Sélectionner la table db-books
  3. Connecter le résultat à la réponse

Récapitulatif des nodes utilisés

Node Usage
dbfind Récupérer toutes les données d'une table
dbfrom + select Requête flexible avec sélection de champs
dbexecute Exécuter une requête dbfrom
dbinsert Insérer une nouvelle entrée
delete by ID Supprimer une entrée spécifique
DBUpdateByID Modifier une entrée existante
get property Extraire une propriété d'un objet
spread Déstructurer un objet
create object Créer un nouvel objet

Méthodes HTTP

  • GET : récupérer des données
  • POST : créer de nouvelles données
  • PUT : modifier des données existantes
  • DELETE : supprimer des données

Conseils pratiques

  • Toujours typer les réponses pour éviter les erreurs de structure
  • Renvoyer l'état actuel de la base après chaque modification
  • Utiliser Ctrl+Espace pour visualiser les résultats pendant le développement
  • L'ID est la clé pour identifier précisément chaque élément
  • Le body permet de transmettre des données du frontend au backend
  • Vérifier systématiquement que la méthode HTTP est correcte pour chaque route