sygal-import-ws
Que fait sygal-import-ws ?
sygal-import-ws est un web service (ws) qui interroge les données présentes dans un SI (via des vues en base de données) et les met à disposition pour leur lecture via des requêtes GET.
Technologies employées
sygal-import-ws repose sur l'utilisation de :
- Apigility pour la fourniture du ws ;
- Doctrine pour la gestion de la partie BDD (notamment des schémas des tables).
Installation
Obtention des sources
S'il s'agit de la première installation du ws, vous devez lancer la commande suivante pour obtenir les sources :
$ git clone git@git.unicaen.fr:dsi/sygal-import-ws.git
$ cd sygal-import-ws
Installation d'une version précise
Lancer la commande suivante pour obtenir la liste des versions disponibles du ws.
$ git fetch && git fetch --tags && git tag
Et si la version la plus récente est par exemple la 1.0.0
, utilisez la commande suivante pour "installer" sur cette version :
$ git checkout 1.0.0
Installation des dépendances
Installez les packages requis par le ws via Composer comme ceci :
$ composer install --no-suggest --optimize-autoloader
Fichier "users.htpasswd"
Ce fichier contient les utilisateurs/mot de passe autorisés à appeler le ws.
S'il s'agit d'une mise à jour du ws, vous avez déjà fait la manip, inutile de lire ce paragraphe.
S'il s'agit de la première installation du ws, placez-vous dans le répertoire config
des sources et lancer la
commande suivante pour créer le fichier "users.htpasswd" contenant un utilisateur sygal-app
dont le mot de passe
va vous être demandé :
$ htpasswd -c users.htpasswd sygal-app
Si vous manquez d'idée pour le mot de passe, utilsez la commande suivante :
$ pwgen 16 1 --symbols --secure
Fichiers de config
S'il s'agit d'une mise à jour du ws, vous avez déjà fait la manip, inutile de lire ce paragraphe. Reportez-vous au "release notes" de la version choisie (ex: 1.0.0).
S'il s'agit de la première installation du ws, 2 fichiers situés dans le répertoire config/autoload
ont besoin d'être
complétés puis renommés :
-
local.php.dist : qui est notamment utilisé pour l'authentification.
- clé
htpasswd
qui désigne le chemin du fichier "users.htpasswd" évoqué plus haut
- clé
-
database.local.php.dist : qui est utilisé pour la connection à la BDD.
- clés
host
,dbname
,port
,user
,password
: les infos d'accès à la BDD.
- clés
Une fois ces fichiers complétés, changer leur extension .php.dist
en .php
.
Interface d'admin Apigility
Passer en mode développement ouvre l'accès à l'interface Apigility de modification du ws. Cette fonctionnalité est réservée aux développeurs du ws et est INTERDIT EN PRODUCTION.
Assurez-vous de bien désactiver le mode développement :
$ composer development-disable
Lancement du web service pour le dévelopement
Solution 1 : le serveur interne PHP
En phase de développement, la façon la plus simple consiste en l'utilisation du serveur interne de php :
$ php -S 0.0.0.0:8080 -ddisplay_errors=0 -t public public/index.php
Solution 2 : Docker
Se placer à la racine des sources du ws pour lancer la commande suivante :
$ docker-compose up -d --build
Vérifier que le container sygal-import-ws-container
figure bien dans la liste des containers
lancés listés par la commande suivante (cf. colonne NAMES
) :
$ docker ps
Le port sur lequel écoute le ws est indiqué dans la colonne PORTS
.
Par exemple, 0.0.0.0:8443->8443/tcp
indique que le ws est accessible sur la machine hôte
à l'adresse https://localhost:8443
.
Les services fournis
Chaque vue en base de données peut être interrogée via un service dédié :
- Acteur : https://localhost:8443/acteur
- Doctorant : https://localhost:8443/doctorant
- Individu : https://localhost:8443/individu
- Role : https://localhost:8443/role
- Source : https://localhost:8443/source
- These : https://localhost:8443/these
- Variable : https://localhost:8443/variable
- Structure : https://localhost:8443/structure
- Etablissement : https://localhost:8443/etablissement
- Ecole doctorale : https://localhost:8443/ecole-doctorale
- Unite de recherche : https://localhost:8443/unite-recherche
Exemple :
$ curl --insecure --header "Accept: application/json" --header "Authorization: Basic xxxx" https://localhost:8443/variable
Remplacer xxxx
par le token généré grâce à la commande suivante
(le mot de passe est celui choisi lors de la commande htpasswd -c users.htpasswd sygal-app
) :
$ echo -n 'sygal-app:motdepasse' | base64
L'interrogation directe de ces adresses va retourner l'intégralité des données du BDD. Afin d'obtenir les informations spécifiques à une donnée, il est possible d'ajouter son identifiant, exemple :
$ curl --insecure --header "Accept: application/json" --header "Authorization: Basic xxxx" https://localhost:8443/variable/ETB_LIB_NOM_RESP
Remarques complémentaires
- Le web service ne répond qu'aux requêtes de type GET.
- Le web service retourne du json seulement.