L'image est disponible sur le hub docker à l'adresse https://hub.docker.com/r/coutcout/bouchon.
Pour récupérer l'image, exécuter la commande suivante: docker pull coutcout/bouchon:TAG
Un endpoint doit être définit dans un fichier yml qui sera envoyé via le service POST /config/endpoint.
Il est possible de mettre plusieurs endpoint dans un même fichier yaml.
- name: test1
folderName: folder1
requestParameterPlace: URL
urlTemplate: url{numberA}{title}
fileTemplate: file{numberA}{title}
parameters:
- tag: numberA
type: number
- tag: title
type: stringDans l'exemple ci-dessus, un appel sur l'url .../url234hello devra retourné le contenu du fichier file234hello dans le sous-dossier folder1 du répertoire data.
Le paramètre numberA correspond à 123.
Le paramètre titre correspond à hello.
- name
- Nom du endpoint
- folderName
- Nom du sous-dossier (à l'intérieur du dossier data) dans lequel devront être stockées toutes les réponses
- requestParameterPlace
-
Emplacement des paramètres de la requête.
Deux choix possibles:- URL: Les paramètres sont à récupérer dans l'URL de la requêtes
- Indisonible pour le moment - BODY: Les paramètres sont à récupérer dans le body de la requêtes
- urlTemplate
-
Template de l'URL qui devra être bouchonnée.
Les paramètres du bouchon doivent être de la forme {nom_param} et doivent exister dans le template du nom du fichier - fileTemplate
-
Template du nom du fichier qui devra être retourné à l'appel de l'URL bouchonnée.
Les paramètres du bouchon doivent être de la forme {nom_param} et doivent exister dans le template du nom du fichier - parameters
-
Liste des paramètres qui sont utilisé dans les templates avec leur type.
Le type doit correspondre à un type de regex.
Une fois le fichier fini, l'uploader via le service POST /config/endpoint.
Une fois l'upload terminé, recharger les endpoints de l'application en appelant le service POST /config/endpoint/reload.
Le bouchon est prêt à être utilisé.
Lorsqu'un endpoint est appelé, l'application renvoie le contenu du fichier associé au endpoint.
Les fichiers doivent être stockés dans le répertoire data.
Actuellement, les fichiers data doivent être forcément déposés à la main dans le container.
Il est possible de le faire via un mapping de dossiers.
Upload d'un fichier de définition de endpoint
POST /config/endpointService permettant d'uploader un ou plusieurs fichiers de définition de endpoints.
Paramètres dans le body de la requête:
| Nom du paramètre | Description du paramètre |
|---|---|
| files | Champs de type file, accepte plusieurs fichier yaml/yml |
| name | Nom du fichier de définition tel qu'il sera stocké sur le serveur. Le nom du fichier sera préfixé de la date du jour au format yyyyMMdd. Lorsque plusieurs fichiers sont envoyés, les noms seront incrémentés.Example:
|
Suppression d'un fichier de définition de endpoint
DELETE /config/endpoint/{NOM_FICHIER_DEFINITION}Service permettant de supprimer un fichier de définition de endpoints.
Paramètres dans l'URL de la requête:
| Nom du paramètre | Description du paramètre |
|---|---|
| NOM_FICHIER_DEFINITION | Nom du fichier donné via le service d'upload |
Lister les fichiers de définition de endpoint
GET /config/endpointService permettant de lister l'ensemble des fichiers de définition de endpoints
Recharger les endpoints
POST /config/endpoint/reloadService permettant de recharger l'ensemble des endpoints disponibles à la suite d'un ajout/retrait/activation/désactivation de fichier de définition de endpoints.
Activer un fichier de définition de endpoint
PUT /config/endpoint/{NOM_FICHIER_DEFINITION}/activateService permettant d'activer un fichier de définition de endpoints.
Paramètres dans l'URL de la requête:
| Nom du paramètre | Description du paramètre |
|---|---|
| NOM_FICHIER_DEFINITION | Nom du fichier donné via le service d'upload. Dans le cadre de d'un fichier désactivé, sur le serveur, il est suffixé d'un .deactivated. Pour autant, il est nécessaire de passer uniquement le nom du fichier sans extension à ce service. |
Désactiver un fichier de définition de endpoint
PUT /config/endpoint/{NOM_FICHIER_DEFINITION}/deactivateService permettant de désactiver un fichier de définition de endpoints.
Afin de le désactiver, un fichier est suffixé de l'extention .deactivated.
Paramètres dans l'URL de la requête:
| Nom du paramètre | Description du paramètre |
|---|---|
| NOM_FICHIER_DEFINITION | Nom du fichier donné via le service d'upload. |
Les fichiers de configuration de l'application sont stockés dans le répertoire /home/config
application.yml
Fichier de configuration racine, il permet de:- Importer les autres fichiers de configuration
- Définir le port d'exposition (par défaut:8080)
application-bouchon.yml
Profil spring: bouchon
Ce fichier détermine deux propriétés:
- bouchon.folder.data
Dossier dans lequel les fichiers renvoyés par le bouchon doivent être stockés.
Chaque endpoint dispose de son sous-dossier défini dans le fichier de configuration du endpoint.
Valeur par défaut: /mnt/data
- bouchon.folder.config
Dossier dans lequel les fichiers de configuration des endpoints seront stockés
Les fichiers de configuration peuvent être uploader soit par mapping de dossier entre le container et la machine host, soit par le service POST /config/endpoint.
Valeur par défaut: /home/bouchon/config
application-custom-regex.yml
Profil spring: custom-regex
Ce fichier décrit des potentielles regex personnalisées sous la propriété bouchon.regex.
Chaque regex devra être définie de la manière suivante: nom_regex: regex
exemple
bouchon.regex: regex1: "\d{2}"
Par défaut, des regex existent déjà:
- Dans l'application:
| Nom de la regex | Regex |
|---|---|
| string | \w+ |
| number | \d+ |
| boolean | true|false |
- Dans le fichier application-custom-regex.yml
| Nom de la regex | Regex |
|---|---|
| date-yyyymmdd | \d{8} |
| date-yyyy-mm-dd | \d{4}-\d{2}-\d{2} |
Pour rajouter des regex, il est donc nécessaire de remplacer le fichier application-custom-regex.yml.
application-log.yml
Profil spring: log
Ce fichier détermine les loggers utilisés ainsi que leur level pour les logs applicatifs
Par défaut, les logs sont stockés dans le répertoire /mnt/logs.
application-messages.yml
Profil spring: messages
Ce fichier détermine l'ensemble des messages de log.
Dans un but internationalisation de l'application, il faudrait remplacer ce fichier par celui de la langue voulue.
Les fichiers de configuration étant séparés de l'application, il est nécessaire de spécifier leur emplacement à l'aide de l'option jvm suivante:
--spring.config.location=<PATH_TO_APPLICATION_YAML>
Cliquez pour voir
-
Initialisation des endpointsCréation des répertoires s'ils n'existent pasCréation du mécanisme de regex paramétrableCréation d'une liste de paramètres commun à l'url et au fichierVérification de la validité de l'URLVérification de la validité du template de fichierComparaison des paramètres de l'URL et du Fichier
Création de la regex de l'url à partir du template de l'url
-
Appel d'un endpoint (GET)Parsing de l'url à partir de la regex pour récupérer les paramètresGénération du nom du fichier recherchéRécupération du fichierRenvoi du fichier
-
Gestions des appels en POST avec paramètres dans le body en JSON -
Chargement d'endpoints à partir de fichiers yaml dans un dossierParamétrage du dossierLecture du dossierChargement d'un fichierVérification du fichierParsing des endpointsChargement des endpointsChargement des fichiers au démarrage
-
Création d'un service de manipulation des fichiers d'endpointsService qui liste les fichiers disponiblesService qui supprime un fichierService qui envoie un fichierPossibilité d'envoyer plusieurs fichiersLecture du fichier
Service qui recharge les endpoints à partir du dossier de configurationService qui désactive un fichier de endpoint
-
Retrait de la création des endpoints via le fichier de propriétés -
Dockerisation de l'applicationCréation du dockerfilePublication de l'image
Création des TUs
Implémation d'un CI/CD
- Service de dépot d'un fichier de données
- Déposer un fichier dans le dossier du endpoint
- Ecrasement du fichier si déjà existant
- Création de la regex du nom de fichier à partir du template du fichier
- Vérifier le nom du fichier avec la regex
- Gestion des erreurs
- Service de suppression d'un fichier de données
- Suppression du fichier dans le bon endpoint
- Gestion des erreur