DiscussionAppProject est une application web développée en Java avec le framework Spring Boot. L'application permet de gérer des discussions et des réponses associées, tout en intégrant des rôles utilisateurs (ADMIN et USER). Les fonctionnalités incluent la création, la mise à jour, la suppression de discussions et de catégories, ainsi que la gestion des réponses. Vous trouverez également un pdf qui fait office de rapport à la racine du repository git.
- Gestion des utilisateurs avec des rôles ADMIN et USER.
- CRUD (Create, Read, Update, Delete) pour les discussions et catégories.
- Gestion des réponses associées à une discussion.
- Blocage et déblocage des discussions (réservé aux admins).
- Pagination et tri des discussions.
- Java 17+
- Spring Boot 3.x
- Maven
- H2 Database (base de données en mémoire pour les tests)
- JUnit 5 (tests unitaires)
- Jackson (sérialisation/désérialisation JSON)
- Java 17+ installé et configuré.
- Maven installé et configuré.
-
Clonez le dépôt :
git clone https://github.com/HE-Arc/DiscussionApp.git cd DiscussionAppProject
-
Compilez le projet et installez les dépendances :
mvn install
-
Lancez l'application :
mvn spring-boot:run
-
Tester l'application via Postman
Il faut savoir que toutes les routes qui nécessitent le userId dans la requête, il faut que ce soit un admin qui fasse cette action
GET http://localhost:8080/api/users
POST http://localhost:8080/api/users
{
"username": "admin",
"password": "adminpass",
"role": "ADMIN"
}
{
"username": "user1",
"password": "userpass",
"role": "USER"
}
GET http://localhost:8080/api/categories
POST http://localhost:8080/api/categories?userId={userId}
{
"name": "CategoryName"
}
GET http://localhost:8080/api/categories/{categoryId}/discussions
GET http://localhost:8080/api/users/{userId}/discussions
GET http://localhost:8080/api/discussions
POST http://localhost:8080/api/discussions
{
"title": "DiscussionTitle",
"user": {
"id": 1
},
"category": {
"id": 1
}
}
PUT http://localhost:8080/api/discussions/{discussionId}
{
"title": "NewDiscussionTitle",
"user": {
"id": 1
},
"category": {
"id": 1
}
}
GET http://localhost:8080/api/discussions?sort={sort(ex:title)}
DELETE http://localhost:8080/api/discussions/{discussionId}?userId={userId}
GET http://localhost:8080/api/responses
POST http://localhost:8080/api/responses
{
"content": "AnswerContent",
"discussion": {
"id": 1
},
"user": {
"id": 1
}
}
GET http://localhost:8080/api/discussions/{discussionId}/responses
DELETE http://localhost:8080/api/responses/{responsesId}?userId={userId}
PUT http://localhost:8080/api/discussions/{discussionId}/block?userId={userId}
PUT http://localhost:8080/api/discussions/{discussionId}/unblock?userId={userId}
Pour exécuter les tests, utilisez la commande suivante :
mvn test
Simon Berthoud, étudiant - HE-Arc 2024