Pages enfant
  • MDWP -2- APIs Pégase

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Sommaire

...

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 (username + passwordd) auprès du serveur OAuth dédié.

...

Info
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.

...

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 :

Bloc de code
# Se rendre dans le répertoire d'installation
cd E:/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 5.4.0
openapi-generator-cli version-manager set 5.4.0
# Aide sur la config
npx @openapitools/openapi-generator-cli config-help -g jav

Génération du client java

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

...

Bloc de code
languagebash
titleGénération des clients java à partir des yaml
# INS GESTION YAML
npx @openapitools/openapi-generator-cli generate -i ins-gestion-api-v5-16.0.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
 
# CHC YAML
npx @openapitools/openapi-generator-cli generate -i chc-application-api-v5-2.4.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-16.0.0.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
 
# COC GESTION YAML
npx @openapitools/openapi-generator-cli generate -i coc-publication-api-v1-1.1.0.yml -g java -o C:/tmp/openapi-generator/ -p apiPackage=fr.univlorraine.pegase.api.coc -p modelPackage=fr.univlorraine.pegase.model.coc -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


APIs utilisées

URLModuleMéthodeUtilisation
url_authn-app/cas/v1/tickets/serveur OAuth
Récupération du Jeton JWT pour authentification des API
url_ins/api/v5/ins/gestion/inscription/${etab}/${codeApprenant}INSlireInscriptionsRécupération du dossier de l'apprenant et de ses inscriptions
url_ins/api/v5/ins/gestion/inscriptions/${etab}/${codeApprenant}/${codeVoeu}/certificat-de-scolariteINSimprimerCertificatDeScolariteRécupération du certificat de scolarité
url_ins/api/v5/ins/gestion/inscriptions/${etab}/${codeApprenant}/${codeVoeu}/${codePiece}/contenuINScontenuPieceRécupération de la photo de l'étudiant
url_chc/api/chc/v5/cursus/{codeStructure}/apprenants/{codeApprenant}/periodes/{codePeriode}CHClireArbreCursusDesInscriptionsRécupération du cursus
url_coc/api/coc/publication/v1/etablissements/${etab}/periodes/${codePeriode}/apprenants/${codeApprenant}/chemins/${chemin}COClisterCursusPubliableApprenantRécupération des notes et résultats de l'étudiant
url_pai/api/v1/pai/attestation-de-paiement/${etab}/${codeApprenant}/${codePeriode}PAIimprimerAttestationDePaiementRécupération de l'attestation de paiement


Tester une API

Nous allons voir comment tester le bon fonctionnement d'une API en la requêtant "à la main".

...

  1. Faire un premier appel (POST) au serveur OAuth pour récupérer le token
  2. Utiliser ce token pour appeler l'API (GET)

Récupération du token

Bloc de code
POST https://authn-app.[univ].pc-scol.fr/cas/v1/tickets?username=[username]&password=[password]

...

  • pegase.accesstoken.url
  • pegase.accesstoken.username
  • pegase.accesstoken.password

Appel de l'API

Bloc de code
GET https://ins.[univ].pc-scol.fr/api/v5/ins/gestion/inscription/[codeEtablissement]/[codeApprenant]/

...