SAE 2.01 · BUT Informatique · Mars 2026

EcoDrop —
API REST

Architecture en couches · Java 17 · PostgreSQL · Tomcat 10

Java 17 Jakarta Servlet Tomcat 10 PostgreSQL Jackson Pattern DAO JDBC Bruno

Présentation

EcoDrop est une API REST complète modélisant un système de gestion écologique de déchets. Les utilisateurs enregistrent des dépôts dans des points de collecte et gagnent des points selon le type et le poids des déchets. Le système inclut un leaderboard, un contrôle d'accès par rôles et des alertes de surcharge automatiques.

Authentification

Token Base64 avec gestion des rôles USER / ADMIN

CRUD complet

4 ressources : déchets, points, dépôts, utilisateurs

Leaderboard

Classement par score pondéré (poids × points / kilo)

Alertes surcharge

Détection automatique des points remplis à plus de 80%

Architecture technique

Le projet suit une architecture en couches stricte, assurant une séparation claire des responsabilités :

Client HTTP

Bruno / curl / frontend

Authentification

authent.java · VerifToken.java

Contrôleurs REST (Servlets)

DepositAPI · DechetRestAPI · CollectionPointRestAPI · UsersAPI

Couche DAO

DepositDAO · DechetDAO · CollectionPointDAO · UsersDAO

DataSource JDBC

DS.java — Connexion poolée

PostgreSQL

4 tables : users · wastetype · collectionpoint · deposit

Modèle de données

Le schéma relationnel est composé de 4 tables reliées par des clés étrangères. La table deposit fait le lien entre utilisateurs, types de déchets et points de collecte.

Schéma relationnel de la base de données EcoDrop

users

Comptes utilisateurs avec login, password et rôle (USER / ADMIN)

wastetype

Types de déchets avec nom et points par kilo

collectionpoint

Points de collecte avec adresse et capacité maximale

deposit

Dépôts effectués : utilisateur × déchet × point, poids et date

Endpoints de l'API

Contexte de déploiement :

/context_ecodrop
Authentification
MéthodeEndpointAuthDescription
GET /auth/token?login=X&password=Y Public Génère un token Base64
Déchets
MéthodeEndpointAuthDescription
GET/dechets/ PublicListe tous les types de déchets
GET/dechets/{id} PublicRécupère un déchet par ID
POST/dechets/ UserCrée un nouveau type de déchet
PUT/dechets/{id} UserRemplace un déchet existant
DELETE/dechets/{id} AdminSupprime un type de déchet
Points de collecte
MéthodeEndpointAuthDescription
GET/points/ PublicListe tous les points
GET/points/{id} PublicDétails d'un point
GET/points/{id}/status PublicTaux de remplissage + alerte
GET/points/overloaded AdminPoints surchargés (>80%)
PUT/points/{id} UserMise à jour complète
PATCH/points/{id} UserMise à jour partielle
DELETE/points/{id}/clear AdminVider un point de collecte
Dépôts
MéthodeEndpointAuthDescription
GET/deposit/ PublicHistorique des dépôts
GET/deposit/{id} PublicDétails d'un dépôt
POST/deposit/ UserEnregistrer un dépôt
PUT/deposit/{id} PublicMise à jour complète
PATCH/deposit/{id} UserMise à jour partielle
Utilisateurs
MéthodeEndpointAuthDescription
GET/users/ PublicListe tous les utilisateurs
GET/users/leaderboard PublicClassement des scores
PUT/users/{id} PublicMise à jour complète
PATCH/users/{id} UserMise à jour partielle

Compétences développées

Architecture REST

Conception d'une API respectant les conventions HTTP (GET, POST, PUT, PATCH, DELETE)

Pattern DAO

Découplage logique métier / accès aux données avec le pattern Data Access Object

SQL avancé

Jointures, agrégations, sous-requêtes et modélisation relationnelle avec PostgreSQL

Authentification

Système par token Basic Auth Base64 avec contrôle d'accès RBAC

Sérialisation JSON

Conversion objet ↔ JSON avec Jackson (ObjectMapper, annotations)

Tests API

Couverture exhaustive des endpoints avec Bruno (succès + erreurs)