Architecture
MDW est autorisé à interroger les APIs Pégase en s'identifiant à l'aide d'un token (JWT). Ce dernier est obtenu en s'authentifiant (id + pwd) auprès du serveur OAuth dédié.
Ce token a une durée de vie limitée. MDW garde donc ce token en mémoire et vérifie régulièrement sa validité afin de le renouveller si nécessaire.
Le paramètre pegase.accesstoken.duration (application.properties) permet d'indiquer la durée (en heure) de conservation du token.
Génération des classes clientes
MDW embarque directement dans son code . Il n'y a pas de dépendance vers une librairie externe.
Pour générer ces classes java, OpenAPI Generator est utilisé depuis la v1.
Afin de permettre de rejouer cette procédure voici la démarche utilisée lors du développement.
Installation d'OpenAPI Generator
Télécharger la version zip de node (https://nodejs.org/en/download/) et dézipper puis :
# Se rendre dans le répertoire d'installation cd C:/node-v14.16.0-win-x64 # Installer openapi-generator-cli npm install @openapitools/openapi-generator-cli npm install @openapitools/openapi-generator-cli -g # Forcer l'utilisation de la version 4.3.1 openapi-generator-cli version-manager set 4.3.1 # Aide sur la config npx @openapitools/openapi-generator-cli config-help -g java
Génération du client java
openapi-generator-cli generate -i ins-gestion-api-v5-2.1.0.yaml -g java -o C:/tmp/openapi-generator/ -p apiPackage=fr.univlorraine.pegase.api.insgestion -p modelPackage=fr.univlorraine.pegase.model.insgestion -p dateLibrary=java8-localdatetime
Récupérer le code généré dans le projet
Si ajout/maj d'une nouvelle api, récupérer les classes des répertoires :
/ src/main/java/fr/univlorraine/pegase/api/{NOM_API}
/src/main/java/fr/univlorraine/pegase/model/{NOM_API}
Si pas déjà récupérés précédemment, copier également les classe à la racine des répertoires :
src/main/java/fr\univlorraine/pegase/api
src/main/java/fr/univlorraine/pegase/api/auth
Attention : Ne pas prendre les fichier situés directement dans src\main\java\fr\univlorraine\pegase\api si on les a déjà récupéré (via une autre API) car on que ne veut pas les écraser (car cela écraserait les modifications pour ApiClient). Idem pour le répertoire src\main\java\fr\univlorraine\pegase\api\auth.
récupérer dans le répertoire E:\tmp\openapi-generator\src le code utile et le copier dans le projet :
Implémentation
Voici des exemples d'appels aux APIs effectués grâce aux classes générées plus ci-dessus.