Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
m4102_tp3
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Guilhem Heugue
m4102_tp3
Commits
9cf7a582
Commit
9cf7a582
authored
5 years ago
by
Yvan Peter
Browse files
Options
Downloads
Patches
Plain Diff
ajout d'explications
parent
52ab902a
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+43
-7
43 additions, 7 deletions
README.md
with
43 additions
and
7 deletions
README.md
+
43
−
7
View file @
9cf7a582
...
...
@@ -65,22 +65,18 @@ En local, vous pouvez également recopier le fichier `/home/public/peter/maven/s
Nous pouvons tout d'abord réfléchir à l'API REST que nous allons offrir pour la ressource
`Ingredient`
. Celle-ci devrait répondre aux URI suivantes :
| Opération | URI | Action réalisée | Retour |
|
-
----------|
-
------------|
-
----------------------------------------------|
-
----------------------------------------------|
|
:
----------|
:
------------|
:
----------------------------------------------|
:
----------------------------------------------|
| GET | /ingredients | récupère l'ensemble des ingrédients | 200 et un tableau d'ingrédients |
|-----------|-------------|-----------------------------------------------|-----------------------------------------------|
| GET | /ingredients/{id} | récupère l'ingrédient d'identifiant id | 200 et l'ingrédient |
| | | | 404 si id est inconnu |
|-----------|-------------|-----------------------------------------------|-----------------------------------------------|
| GET | /ingredients/{id}/name | récupère le nom de l'ingrédient | 200 et le nom de l'ingrédient |
| | | d'identifiant id | 404 si id est inconnu |
|-----------|-------------|-----------------------------------------------|-----------------------------------------------|
| POST | /ingredients | création d'un ingrédient | 201 et l'URI de la ressource créée + représentation |
| | | | 400 si les informations ne sont pas correctes |
| | | | 409 si l'ingrédient existe déjà (même nom) |
|-----------|-------------|-----------------------------------------------|-----------------------------------------------|
| DELETE | /ingredients/{id} | destruction de l'ingrédient d'identifiant id | 204 si l'opération à réussi |
| | | | 404 si id est inconnu |
|-----------|-------------|-----------------------------------------------|-----------------------------------------------|
Un ingrédient comporte uniquement un identifiant et un nom. Sa
représentation JSON prendra donc la forme suivante :
...
...
@@ -90,7 +86,8 @@ représentation JSON prendra donc la forme suivante :
"name": "mozzarella"
}
Lors de la création, l'identifiant n'est pas connu. Aussi on aura une
Lors de la création, l'identifiant n'est pas connu car il sera fourni
par la base de donnée. Aussi on aura une
représentation JSON qui comporte uniquement le nom :
{ "name": "mozzarella" }
...
...
@@ -102,6 +99,45 @@ mise en place pour notre développement :

#### JavaBeans
JavaBean est un standard pour les objets Java permettant de les créer
et de les initialiser et de les manipuler facilement. Pour cela ces
objets doivent respecter un ensemble de conventions :
-
la classe est sérialisable
-
elle fournit au moins un constructeur vide
-
les attributs privés de la classe sont manipulables via des
méthode publiques
*get*_Attribut_
et
*set*_Attribut_
Les DTO et la classe
`Ingredient`
décrits dans la suite sont des
JavaBeans.
#### Data Transfer Object (DTO)
Les DTO correspondent à la représentation des données qui sera
transportée par HTTP. Ce sont des Javabeans qui possèdent les même
propriétés que la représentation (avec les getter/setter
correspondants).
Jersey utilisera les
*setter*
pour initialiser l'objet à partir
de la représentation JSON ou XML et les
*getter*
pour créer la
représentation correspondante.
#### Data Access Object (DAO)
Le DAO permet de faire le lien entre la représentation objet et le
cntenu de la base de données.
Nous utiliserons la
[
librairie JDBI
](
http://jdbi.org/
)
qui permet
d'associer une interface à des requêtes SQL.
La classe
`BDDFactory`
qui vous est fournie permet un accès facilité
aux fonctionnalités de JDBI.
#### La représentation des données manipulées par la ressource
La classe
`Ingredient`
est un JavaBean qui représente ce qu'est un
ingrédient. Elle porte des méthodes pour passer de cette
représentation aux DTO.
Cela permet de découpler l'implémentation de la ressource qui traite
les requêtes HTTP, de la donnée manipulée. Cette classe pourrait
porter des comportements liés à cette donnée (par ex. calcul de TVA).
## Mise en œuvre
### Une première implémentation : récupérer les ingrédients existants
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment