Skip to content

Une API REST complète pour gérer une bibliothèque avec utilisateurs, livres et emprunts. Construite avec Express.js et SQLite pour permettre aux étudiants de pratiquer les opérations CRUD avancées.

Notifications You must be signed in to change notification settings

codebysaadbouh/library-api-javascript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API de Gestion de Bibliothèque

Une API REST complète pour gérer une bibliothèque avec utilisateurs, livres et emprunts. Construite avec Express.js et SQLite pour permettre aux étudiants de pratiquer les opérations CRUD avancées.

Installation

  1. Cloner ou télécharger le projet
  2. Installer les dépendances :
npm installgit push -u origin master

Démarrage

Mode développement (avec rechargement automatique)

npm run dev

Mode production

npm start

L'API sera disponible sur http://localhost:3000

Structure de la base de données

Table users (Utilisateurs)

  • id : Identifiant unique
  • nom : Nom de famille
  • prenom : Prénom
  • email : Email (unique)
  • telephone : Numéro de téléphone
  • date_inscription : Date d'inscription
  • actif : Statut actif/inactif

Table books (Livres)

  • id : Identifiant unique
  • titre : Titre du livre
  • auteur : Auteur du livre
  • isbn : ISBN (unique)
  • genre : Genre littéraire
  • annee_publication : Année de publication
  • nombre_exemplaires : Nombre total d'exemplaires
  • exemplaires_disponibles : Exemplaires disponibles
  • date_ajout : Date d'ajout

Table emprunts (Emprunts)

  • id : Identifiant unique
  • user_id : ID de l'utilisateur
  • book_id : ID du livre
  • date_emprunt : Date d'emprunt
  • date_retour_prevue : Date de retour prévue
  • date_retour_effective : Date de retour effective
  • statut : Statut (en_cours, retourne)

Endpoints disponibles

👥 Gestion des utilisateurs

Lister tous les utilisateurs

  • GET /users

Récupérer un utilisateur

  • GET /users/:id

Créer un utilisateur

  • POST /users
  • Body JSON :
{
  "nom": "Dupont",
  "prenom": "Jean",
  "email": "jean.dupont@email.com",
  "telephone": "0123456789"
}

Modifier un utilisateur

  • PUT /users/:id
  • Body JSON : (mêmes champs que création)

Supprimer un utilisateur

  • DELETE /users/:id
  • ⚠️ Impossible si l'utilisateur a des emprunts en cours

📚 Gestion des livres

Lister tous les livres

  • GET /books

Récupérer un livre

  • GET /books/:id

Ajouter un livre

  • POST /books
  • Body JSON :
{
  "titre": "Le Petit Prince",
  "auteur": "Antoine de Saint-Exupéry",
  "isbn": "978-2070408504",
  "genre": "Fiction",
  "annee_publication": 1943,
  "nombre_exemplaires": 3
}

Modifier un livre

  • PUT /books/:id
  • Body JSON : (mêmes champs que création)

Supprimer un livre

  • DELETE /books/:id
  • ⚠️ Impossible si le livre a des emprunts en cours

📖 Gestion des emprunts

Lister tous les emprunts

  • GET /emprunts
  • Retourne les emprunts avec les détails utilisateur et livre

Créer un emprunt

  • POST /emprunts
  • Body JSON :
{
  "user_id": 1,
  "book_id": 2,
  "duree_jours": 14
}

Retourner un livre

  • PUT /emprunts/:id/retour
  • Marque l'emprunt comme retourné et libère l'exemplaire

Emprunts d'un utilisateur

  • GET /emprunts/user/:user_id

Exemples d'utilisation avec curl

Créer un utilisateur

curl -X POST http://localhost:3000/users \
  -H "Content-Type: application/json" \
  -d '{
    "nom": "Durand",
    "prenom": "Sophie",
    "email": "sophie.durand@email.com",
    "telephone": "0147258369"
  }'

Ajouter un livre

curl -X POST http://localhost:3000/books \
  -H "Content-Type: application/json" \
  -d '{
    "titre": "1984",
    "auteur": "George Orwell",
    "isbn": "978-0451524935",
    "genre": "Science-Fiction",
    "annee_publication": 1949,
    "nombre_exemplaires": 2
  }'

Créer un emprunt

curl -X POST http://localhost:3000/emprunts \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": 1,
    "book_id": 1,
    "duree_jours": 14
  }'

Retourner un livre

curl -X PUT http://localhost:3000/emprunts/1/retour

Voir tous les emprunts

curl http://localhost:3000/emprunts

Exercices pour les étudiants

Niveau Débutant

  1. CRUD de base : Tester tous les endpoints de création, lecture, modification, suppression
  2. Validation : Tester les cas d'erreur (données manquantes, emails dupliqués, etc.)
  3. Relations : Comprendre les liens entre utilisateurs, livres et emprunts

Niveau Intermédiaire

  1. Gestion des stocks : Observer comment les exemplaires disponibles sont gérés
  2. Contraintes métier : Tester les règles (pas de suppression avec emprunts en cours)
  3. Requêtes complexes : Analyser les jointures dans les emprunts

Niveau Avancé

  1. Statistiques : Ajouter des endpoints pour les statistiques (livres les plus empruntés, etc.)
  2. Recherche : Implémenter la recherche de livres par titre, auteur, genre
  3. Authentification : Ajouter un système d'authentification
  4. Notifications : Gérer les retards et notifications

Données par défaut

L'API est livrée avec :

  • 4 utilisateurs de test
  • 5 livres populaires
  • 2 emprunts en cours

Ces données permettent de tester immédiatement tous les endpoints !

Technologies utilisées

  • Express.js : Framework web pour Node.js
  • SQLite3 : Base de données relationnelle légère
  • CORS : Gestion des requêtes cross-origin
  • Nodemon : Rechargement automatique en développement

About

Une API REST complète pour gérer une bibliothèque avec utilisateurs, livres et emprunts. Construite avec Express.js et SQLite pour permettre aux étudiants de pratiquer les opérations CRUD avancées.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published