Projet MonDossierWeb
Pages enfant
  • MDWP -2- APIs Pégase

Vous regardez une version antérieure (v. /wiki/spaces/PROJMONDOSSIERWEB/pages/1042055173/MDWP+-2-+APIs+P%C3%A9gase) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 12) afficher la version suivante »

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 les classes java clientes utilisées pour interroger les APIs. 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.

Dans un soucis de transparence et afin de permettre de rejouer cette procédure (normalement pas nécessaire), voici, ci-dessous, 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

Exemple pour générer les classes de clients java des principales API :

Copier les YML dans C:\tmp\YML et lancer depuis le répertoire où se trouve le YAML une génération java :

Génération des clients java à partir des yaml
# INS GESTION YAML
npx @openapitools/openapi-generator-cli generate -i ins-gestion-api-v5-2.2.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 
 
# CURSUS YAML
npx @openapitools/openapi-generator-cli generate -i chc-application-api-v5-1.0.0.yml -g java -o C:/tmp/openapi-generator/ -p apiPackage=fr.univlorraine.pegase.api.chc -p modelPackage=fr.univlorraine.pegase.model.chc -p dateLibrary=java8-localdatetime --skip-validate-spec
 
# PAI YAML 
npx @openapitools/openapi-generator-cli generate -i pai-api-v1-2.1.2.yaml -g java -o C:/tmp/openapi-generator/ -p apiPackage=fr.univlorraine.pegase.api.pai -p modelPackage=fr.univlorraine.pegase.model.pai -p dateLibrary=java8-localdatetime --skip-validate-spec

Récupérer le code généré dans le projet

Pour chaque 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}

Implémentation

Pour des exemples d'appels aux APIs effectués grâce aux classes générées ci-dessus, voir le code source du PegaseService sur github : https://github.com/EsupPortail/esup-mdw-pegase/blob/master/src/main/java/fr/univlorraine/mondossierweb/service/PegaseService.java







  • Aucune étiquette