Voici la doc de l'API, toute les requêtes ci- dessous sont préfixer par : http://localhost:8080/jakartatp-1.0-SNAPSHOT/
Dès fois j'ai préféré utiliser les streams au lieux d'une requête en base pour m'exercer. Car je ne savais pas vraiment ce qui était le plus optimizé.
All:
api/users/
Un seul :
api/users/1
Par email :
api/users/?email=test@test.fr
Tout les loans du user 1 :
api/users/1/loans
Un seul :
api/users/1/loans/0
Par status :
api/users/1/loans?status=EN_RETARD
Valeur possible ( les valeurs de LoanState.java ) :
- EN_COURS
- RENDU
- EN_RETARD
All:
api/groups
Un seul :
api/groups/1
Par nom du groupe :
api/groups/?name=test
Tout les Albums du groupe 1 :
api/groups/1/albums
Premier Album du groupe 1 :
api/groups/1/albums/0
Par titre de l'album:
api/groups/:id/albums?title=test
Tous les items pour le premier album du groupe 1 :
api/groups/1/albums/0/items
Le deuxième item de la liste précédante :
api/groups/1/albums/0/items/2
{
"email": "benjamin@hotmail.fr",
"firstName": "Benjamin",
"lastName": "David"
}Si l'email existe déjà, alors une exception sera levée.
Sur /api/users/:id/loans
[
{
"dateStart": "2020-02-27",
"itemId": 3
}
]On peut aller jusqu'a 5 enregistrements :
[
{
"itemId": 5
},
{
"itemId": 5
},
{
"itemId": 6
}
]Ici il viendra créer des loan pour l'item 5 et 6 si l'id est identique il n'en garde qu'un.
L'utilisateur ne peux pas créer un Loan avec un Item déjà pris ou inutilisable.
Crée un groupe avec des albums :
Sur api/groups
{
"createdAt": "2020-02-27",
"name": "Manafest"
}Si un groupe a le même nom et la même date alors on ne le crée pas.
Sur api/groups/:id/albums
{
"release": "2018-02-06",
"title": "RocK or Bust"
}Vous ne pourrez pas créer plusieurs albums d'un coup.
Vous ne pouvez pas mettre un album qui a le même titre sur ce groupe.
Sur /api/groups/:id/albums/:id/items/
[
{
"state": "NEUF",
"type": "CD",
"nombre": 10
},
{
"state": "NEUF",
"type": "VINYLE",
"nombre": 9
}
]Viendra créer 9 items-VINYLE et 10 item-CD sur l'album.
Valeur possible pour le state ( les valeurs d’ItemState.java ) :
- NEUF
- CONVENABLE
- ABIMER
- INUTILISABLE
Valeur posible pour le state ( les valeurs d’ItemType.java ) :
- CD
- VINYLE
- CASSETTE
Sur api/users/:id/
{
"email": "benjamin@hotmail.fr",
"firstName": "Test",
"lastName": "Test"
}Une erreur sera levée si l'email a remplacé existe deja en BDD
Sur api/users/:id/loans/:id
{
"state": "RENDU"
}Cette route sert principalement à rendre les emprunts. Elle peut prendre également la valeur "EN_RETARD". Quand un loan est rendu on enlève le lien avec l'item qui était lié.
Sur api/groups/:id
{
"createdAt": "2020-02-27",
"name": "Manafest-Test"
}Sur api/groups/:id/albums/:id
{
"title": "Mon Super Album Test",
"release": "2020-02-27"
}Sur api/groups/:id/albums/:id/items/:id
{
"state": "NEUF",
"type": "VINYLE"
}Si tout c'est bien passer alors en renvoie une 204.
Sur api/users/:id
On ne peut pas supprimer un utilisateur qui a des loans qui sont EN_COURS.
Sur api/users/:id/loans/:id
On ne peut pas supprimer un loan qui est EN_COURS.
Cette route ne devrait jamais être utilisé car on l'utilise pour l'historique.
Sur api/groups/:id
On ne peut pas supprimer un groupe avec des albums
Sur api/groups/:id/albums/:id
On ne peut pas supprimer un album avec des items
Sur api/groups/:id/albums/:id/items
On ne peut pas supprimer un item qui est emprunté.