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.
- Cloner ou télécharger le projet
- Installer les dépendances :
npm installgit push -u origin master
npm run dev
npm start
L'API sera disponible sur http://localhost:3000
id
: Identifiant uniquenom
: Nom de familleprenom
: Prénomemail
: Email (unique)telephone
: Numéro de téléphonedate_inscription
: Date d'inscriptionactif
: Statut actif/inactif
id
: Identifiant uniquetitre
: Titre du livreauteur
: Auteur du livreisbn
: ISBN (unique)genre
: Genre littéraireannee_publication
: Année de publicationnombre_exemplaires
: Nombre total d'exemplairesexemplaires_disponibles
: Exemplaires disponiblesdate_ajout
: Date d'ajout
id
: Identifiant uniqueuser_id
: ID de l'utilisateurbook_id
: ID du livredate_emprunt
: Date d'empruntdate_retour_prevue
: Date de retour prévuedate_retour_effective
: Date de retour effectivestatut
: Statut (en_cours, retourne)
- GET
/users
- GET
/users/:id
- POST
/users
- Body JSON :
{
"nom": "Dupont",
"prenom": "Jean",
"email": "jean.dupont@email.com",
"telephone": "0123456789"
}
- PUT
/users/:id
- Body JSON : (mêmes champs que création)
- DELETE
/users/:id
⚠️ Impossible si l'utilisateur a des emprunts en cours
- GET
/books
- GET
/books/:id
- 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
}
- PUT
/books/:id
- Body JSON : (mêmes champs que création)
- DELETE
/books/:id
⚠️ Impossible si le livre a des emprunts en cours
- GET
/emprunts
- Retourne les emprunts avec les détails utilisateur et livre
- POST
/emprunts
- Body JSON :
{
"user_id": 1,
"book_id": 2,
"duree_jours": 14
}
- PUT
/emprunts/:id/retour
- Marque l'emprunt comme retourné et libère l'exemplaire
- GET
/emprunts/user/:user_id
curl -X POST http://localhost:3000/users \
-H "Content-Type: application/json" \
-d '{
"nom": "Durand",
"prenom": "Sophie",
"email": "sophie.durand@email.com",
"telephone": "0147258369"
}'
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
}'
curl -X POST http://localhost:3000/emprunts \
-H "Content-Type: application/json" \
-d '{
"user_id": 1,
"book_id": 1,
"duree_jours": 14
}'
curl -X PUT http://localhost:3000/emprunts/1/retour
curl http://localhost:3000/emprunts
- CRUD de base : Tester tous les endpoints de création, lecture, modification, suppression
- Validation : Tester les cas d'erreur (données manquantes, emails dupliqués, etc.)
- Relations : Comprendre les liens entre utilisateurs, livres et emprunts
- Gestion des stocks : Observer comment les exemplaires disponibles sont gérés
- Contraintes métier : Tester les règles (pas de suppression avec emprunts en cours)
- Requêtes complexes : Analyser les jointures dans les emprunts
- Statistiques : Ajouter des endpoints pour les statistiques (livres les plus empruntés, etc.)
- Recherche : Implémenter la recherche de livres par titre, auteur, genre
- Authentification : Ajouter un système d'authentification
- Notifications : Gérer les retards et notifications
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 !
- 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