API - Tablify-Developement/Tablify-Web GitHub Wiki

Résumé coaching 5.a

+ Les choix de conception de l'API sont expliqués sur le Wiki : Ressources exposées, choix de nommage, technologie utilisée… Les noms et conventions utilisés sont cohérents.
+ La documentation de l'API est accessible depuis le Wiki.  Elle est claire et bien organisée. 
"Pour chaque ressource, une section détaille au moins : 
* la description de la ressource
* les endpoints associés et les méthodes pour y accéder
* les éventuels paramètres disponibles
* un exemple de requête
* un exemple de réponse"
+ L'API respecte globalement les principes REST
+ Le groupe peut présenter un exemple fonctionnel de endpoint de l'API (par ex. avec curl).  Tous les étudiants peuvent en expliquer le fonctionnement.  
+ Le groupe utilise un outil adéquat dédié pour tester son API lors du développement

1. Choix de conception pour l'API

L'API du projet Tablify a été développée avec Express.js en TypeScript, dans une architecture RESTful modulaire.
Elle expose des ressources liées aux entités métier suivantes :

  • utilisateurs
  • restaurants
  • tables
  • réservations
  • horaires d'ouverture

Chaque ressource est accessible via un chemin de type /api/<ressource>.
Le nommage respecte la convention kebab-case, et les méthodes HTTP utilisées sont conformes aux bonnes pratiques REST : GET, POST, PUT, PATCH, DELETE.

L'organisation des fichiers suit un modèle clair avec séparation des routes, contrôleurs et services.


2. Documentation de l'API

La documentation est en cours de centralisation, mais les principales routes sont déjà définies et utilisables.
Chaque ressource comprend :

  • Description de la ressource
  • Méthodes disponibles
  • Paramètres (query/body/path)
  • Exemple de requête
  • Exemple de réponse JSON

2.1 /api/users

Description : Gère les comptes utilisateurs (inscription, connexion, suppression)

Méthodes : GET, POST, DELETE

Exemple POST :

POST /api/users
Content-Type: application/json

{
  "nom": "Dupont",
  "prenom": "Jean",
  "mail": "[email protected]",
  "password": "motdepasse",
  "date_naissance": "1990-04-25"
}

Réponse :

{
  "id": "123",
  "nom": "Dupont",
  "prenom": "Jean",
  "mail": "[email protected]"
}

2.2 /api/restaurants

Description : Gère les informations des restaurants

Méthodes : GET, POST, PUT, DELETE


2.3 /api/restaurant-tables

Description : CRUD sur les tables d’un restaurant

Méthodes : GET, POST, PUT, DELETE


2.4 /api/reservations

Description : Réservations de table, annulation, création, historique

Méthodes : GET, POST, DELETE, PATCH

Exemple de création de réservation :

POST /api/reservations
Content-Type: application/json

{
  "restaurantId": "abc123",
  "utilisateurId": "u456",
  "tableId": "t789",
  "date": "2025-06-05",
  "heure": "20:00"
}

3. Outils utilisés pour développer et tester l’API

  • Visual Studio Code pour l’environnement de développement
  • Postman et Thunder Client (VSCode) pour tester les requêtes
  • Jest et Supertest pour les tests unitaires des routes
  • Docker pour tester l’intégration avec la base de données PostgreSQL

4. Exemple de requête fonctionnelle avec cURL

curl -X POST http://localhost:3001/api/users -H "Content-Type: application/json" -d '{
  "nom": "Rogier",
  "prenom": "Noah",
  "mail": "[email protected]",
  "password": "test1234",
  "date_naissance": "2002-09-01"
}'

Cette requête crée un nouvel utilisateur dans la base de données du projet Tablify.

⚠️ **GitHub.com Fallback** ⚠️