feat: README.md fini

This commit is contained in:
Lucàs
2024-12-19 14:04:39 +01:00
parent 401978a0b4
commit dd4861ff18
5 changed files with 92 additions and 8 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

+92 -8
View File
@@ -11,7 +11,47 @@ Pour pouvoir lancer ce projet vous devez avoir installé les outils suivants :
- [Docker Desktop](#installation-de-docker-desktop) - [Docker Desktop](#installation-de-docker-desktop)
- [Insonmia](#installation-de-insomnia) - [Insonmia](#installation-de-insomnia)
Assurez-vous d'avoir les ports `3000`, `3306` et `27017` de disponible sur votre machine. Assurez-vous d'avoir les ports `3000`, `3306` et `27017` de disponible sur votre
machine.
## Fonctionnalités
Ce projet rend accessible une API REST qui permet de filtrer et récupérer des
données.
Le téléchargement des données se fait de manière asynchrone en utilisant les WebStream de Nodes.JS.
Le projet prend en charge les archives suivantes :
- ZIP
- GZIP
Il prend également en charge les formats de données suivants :
- JSON
- CSV
Pour rendre le processus modulaire, nous avons décidé d'utiliser le Factory Pattern.
Il est donc possible d'ajouter de nouveaux services de récupération de données
en implémentant une interface.
L'API expose plusieurs routes :
- `/randomize`: Le web service général qui va venir piocher dans les autres web
services pour récupérer des données
- `/randomize/nudger`: Le web service qui va venir récupérer des données de
Nudger
- `/randomize/openfoodfacts`: Le web service qui va venir récupérer des données
de OpenFoodFacts
- `/randomize/world-cities`: Le web service qui va venir récupérer des données
de World Cities
Toutes ces routes acceptent les paramètres suivants :
- `size`: Le nombre de données à récupérer (doit être un entier > 0, par défaut 10)
Il vous faudra également fournir un fichier DMN (XML) ou un fichier JSON dans le
corps de la requête.
Lors d'une requête sur `/randomize`, une ligne de log est ajoutée dans la base mariadb.
![Log](.readme/mariadb-log.png)
### Installation de Docker Desktop ### Installation de Docker Desktop
@@ -80,7 +120,7 @@ requêtes qui ont été importées.
![Collection](.readme/insomnia-import-5.png) ![Collection](.readme/insomnia-import-5.png)
![Requests](.readme/insomnia-import-6.png) ![Requests](.readme/insomnia-import-6.png)
## Lancez le projet ## Lancer le projet
Pour lancer le projet, ouvrez votre terminal et rendez-vous à la racine du Pour lancer le projet, ouvrez votre terminal et rendez-vous à la racine du
projet. projet.
@@ -94,7 +134,8 @@ Cette commande va construire les images Docker et lancer les conteneurs.
En effet, cette application contient 3 services : En effet, cette application contient 3 services :
- `app` : expose l'API REST (sur le port `3000`) - `app` : expose l'API REST (sur le port `3000`)
- `mongodb` : contient la base de données qui va stocker les données filtrées (sur le port `27017`) - `mongodb` : contient la base de données qui va stocker les données filtrées (
sur le port `27017`)
- `mariadb`: contient la base de donnée des logs (sur le port `3306`) - `mariadb`: contient la base de donnée des logs (sur le port `3306`)
Vous pouvez vérifier que les conteneurs sont bien lancés en exécutant la Vous pouvez vérifier que les conteneurs sont bien lancés en exécutant la
@@ -105,6 +146,7 @@ docker ps
``` ```
Vous devriez voir les 3 conteneurs lancés. Vous devriez voir les 3 conteneurs lancés.
``` ```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d90351a5dd4 compo-service-log-project-app "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3000->3000/tcp app 7d90351a5dd4 compo-service-log-project-app "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3000->3000/tcp app
@@ -112,21 +154,63 @@ f77729fee31b mongo "docker-entrypoint.s…" 2 hour
f59177f86802 mariadb "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3306->3306/tcp mariadb f59177f86802 mariadb "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3306->3306/tcp mariadb
``` ```
Vous pouvez également vérifier que les conteneurs sont bien lancés en ouvrant l'interface graphique de Docker Desktop. Vous pouvez également vérifier que les conteneurs sont bien lancés en ouvrant
l'interface graphique de Docker Desktop.
![Docker Desktop avec les conteneurs de lancés](.readme/docker-desktop-running-containers.png) ![Docker Desktop avec les conteneurs de lancés](.readme/docker-desktop-running-containers.png)
Il se peut que le conteneur `app` redémarre plusieurs fois avant de se stabiliser. Il se peut que le conteneur `app` redémarre plusieurs fois avant de se
Cela est dû au fait que le conteneur `app` démarre plus vite que les conteneurs `mongodb` et `mariadb`. stabiliser.
Et celui-ci essaye de se connecter aux bases de données mais elles ne sont pas encore prêtes. Cela est dû au fait que le conteneur `app` démarre plus vite que les conteneurs
`mongodb` et `mariadb`.
Et celui-ci essaye de se connecter aux bases de données mais elles ne sont pas
encore prêtes.
## Tester l'API ## Tester l'API
Pour tester l'API rendez-vous sur Insomnia avec la collection importée et Pour tester l'API rendez-vous sur Insomnia avec la collection importée et
assurez-vous que les conteneurs sont bien lancés. assurez-vous que les conteneurs sont bien lancés.
### Comment fonctionne Insomnia ?
Une fois une collection de chargée, vous obtenez cette interface:
## Autheurs 1. La liste des requêtes de la collection
2. Une fois une requête sélectionnée, vous pouvez accéder à ces détails à
travers différents onglets
3. Le contenu de l'onglet params de la requête (ici il y a le paramètre `size`
qui définit le nombre de données à récupérer)
4. Le bouton pour envoyer la requête
5. Le résultat de la requête
![Fonctionnement de l'API](.readme/insomnia-test-1.png)
Dans l'onglet `Body` vous pouvez voir le contenu de la requête.
Vous pouvez modifier les paramètres de la requête si vous le souhaitez.
1. Vous choisissez le type de données que vous envoyez (dans cet exemple c'est
un fichier DMN donc du XML)
2. Vous pouvez mettre le contenu de votre DMN ici
![Modifier la requête XML](.readme/insomnia-test-2.png)
Dans le cas où vous souhaitez utiliser les schémas JSON, vous pouvez
sélectionner `JSON` à la place de `XML`
et mettre le contenu de votre JSON dans le champ `Body`.
![Modifier la requête JSON](.readme/insomnia-test-3.png)
## Arrêter le projet
Pour arrêter le projet, ouvrez votre terminal et rendez-vous à la racine du
projet.
Ensuite, exécutez la commande suivante :
```sh
docker-compose down
```
## Auteurs
- 👤 [Kevin Mitressé](https://github.com/kmitresse) - 👤 [Kevin Mitressé](https://github.com/kmitresse)
- 👤 [Lucàs Vabre](https://github.com/LucasVbr) - 👤 [Lucàs Vabre](https://github.com/LucasVbr)