- Pour lire ce fichier veuillez utiliser un éditeur qui supporte les fichier Markdown.
L'application WEB vous permettra de gérer très simplement un stock contenant différents produits. Nous nous intéressons à l'état du stock (inventaire) ainsi qu'aux différent mouvements qui font entrer ou sortir certaines quantités de produit de cet inventaire.
NodeJs, Express, Javascript ES6, Github.
La premiere partie de l'application est une API HTTP REST, on supposera que la liste des different produits possible est disponible sur le serveur sous la forme d'un fichier JSON. (server/products.json), l'inventaire est uniquement gardé en mémoire, ce qui signifie qu'il est vide au moment où le serveur HTTP est démarré.
voici les différentes méthodes et URL qui constituent l'API
Récupère la liste des produits connus du serveur.
Code | Description |
---|---|
200 | liste des produits |
Exemple: | |
[{ id : 123, name : "Bic bleu" }] |
|
Récupère l'inventaire du stock
Code | Description |
---|---|
200 | liste des articles en stock. |
Content-type: application/json | |
[{ productId : 123, productName : "Bic bleu", "quantity" : 35 }] | |
Récupère l'historique des mouvements d'inventaire
Code | Description |
---|---|
200 | liste des mouvements. |
Content-type: application/json | |
Exemple : [{ productId : 123, productName : "Bic bleu", "quantity" : 35 }] | |
Astuce : utilisez la fonction toJSON() sur un objet Date pour produire la date d'enregistrement. |
Enregistre un mouvement Lorsque le serveur reçoit une rêquete d'enregistrement, il ajoute à celle-ci la date du jour et l'heure à laquelle la requête a été reçue, il met également à jour l'inventaire, disponible via la requête GET /inventory, et la liste des mouvements, disponible via la requête GET /moves Corps de la requête (obligatoire) : mouvement à enregistrer.
Content-Type: application/JSON
Exemple
{ "productId" : 123, quantity : 5, direction : "in" }
Code | Description |
---|---|
201 | mouvement enregistré. |
400 | mouvement invalide |
Cette réponse est donnée si : | |
- productId n'est pas un nombre entier positif | |
- productId ne correspond pas à l'identifiant d'un produit connu du serveur | |
- quntity n'est pas un nombre entier supérieur a 1 | |
- direction est différent de "in" ou "out" | |
- direction est "out" et quantity est supérieur à la quantité disponible dans le stock. |
Vide la liste des mouvements et remet l'inventaire à Zero
Code | Description |
---|---|
204 | Pas de contenu. |
- utilisation de Github est obligatoire dès le début du projet
- utilisation des commits lisible et régulier