Introduction à l’API Rest de GeoServer utilisée avec cURL et PHP sur Apache

Communiquer entre le site internet et le serveur cartographique est essentiel pour construire des architectures de Systèmes d’Informations Géographiques (SIG) intégrées. Ce court article introduit l’appel de l’API (Application programming interface) Rest (Representational state transfer) de GeoServer à l’aide des langages de programmation PHP (Hypertext Preprocessor) et cURL (client Uniform Resource Locator request library). Comme son l’indique, ce dernier langage permet de traiter les contenus issus d’URL comme par exemple les ressources en format JSON (JavaScript Object Notation) ou XML (Extensible Markup Language). Tout d’abord, on installe rapidement cURL sur le serveur Web Apache qui nous sert par la suite à retourner les informations de GeoServer.

1. Installation de cURL sur Apache et PHP

On a vu comment installer Apache et PHP (en temps que module) sur Windows et on doit donc configurer l’environnement pour mettre en œuvre cURL. Pour cela, il suffit de modifier le fichier php.ini situé dans votre répertoire PHP et d’activer l’extension dédiée :

extension=php_curl.dll

Pour fonctionner, cURL a aussi besoin des librairies DLL: libeay32.dll et ssleay32.dll. Ces dernières sont logiquement présentes dans votre installation PHP et il faut simplement vérifier que le chemin de PHP est bien défini dans le système Windows. Par exemple, si le répertoire de PHP  est C:\php, ce chemin doit être copié dans la variable d’environnement système Path. Puis, on redémarre le serveur Apache.

2. Appel de l’API Rest de GeoServer

GeoServer met à disposition un style d’architecture appelé API Rest qui permet une interopérabilité entre le serveur cartographique et d’autres systèmes. Ce service web est basé sur les protocoles HTTP et il est alors possible de réaliser des requêtes sur les différentes URI (Uniform Resource Identifier) du serveur cartographique. Les opérations disponibles sur GeoServer sont de type GET, POST, PUT et DELETE. La documentation de l’API Rest de Geoserver détaille les différentes opérations disponibles pour chaque ressource. Par exemple, il est possible d’obtenir la liste des espaces de travail, des entrepôts, les couches SIG stockées et bien d’autres informations.

Pour tester les services web conformes au style d’architecture REST, de nombreux outils existent tel le logiciel Postman. Par défaut, GeoServer retourne les ressources associées en format JSON. Ici, on teste la requête GET : http://localhost:8080/geoserver/rest/workspaces/ pour obtenir la liste des espaces de travail (figure 1). Une demande d’authentification basique est nécessaire, il faut simplement saisir l’identifiant et le mot de passe de l’utilisateur (par défaut : admin et geoserver).

Figure 1 : Requête GET de liste des workspaces de GeoServer retournée en format JSON.

Pourquoi utiliser l’API Rest alors que GeoServer a une interface graphique?

L’intérêt est justement d’éviter de se servir de l’interface graphique pour ne pas répéter certaines tâches et donc automatiser au maximum les procédés. Par exemple, une couche SIG importée dans PostgreSQL peut être importée de manière programmée dans GeoServer. L’idée est au final de créer un système totalement intégré entre l’ensemble des composantes de votre architecture SIG.

Certes, GeoServer est développé en Java et il est donc plus commun de voir des systèmes intégrés basés sur ce même langage mais il est tout à fait possible de s’appuyer sur d’autres langages comme PHP ou Python pour manipuler l’API. Ici, on introduit rapidement l’appel de l’API Rest en PHP et cURL :

<?php
$url = "http://localhost:8080/geoserver/rest/workspaces/";
$ch = curl_init();	
$passwordStr = "admin:geoserver"; 
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, $passwordStr);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Accept: application/json'));
$data = curl_exec($ch);
var_dump($data);
curl_close($ch);
?>

Toutes les fonctions cURL et les paramètres associés sont détaillés dans le manuel PHP.

En Conclusion, l’installation de cURL / PHP sur Apache est simple et rapide et nous permet de prendre en charge les ressources issues de GeoServer à l’aide de son API Rest. On peut ainsi entreprendre le développement d’architecture SIG spécifique en déterminant les rôles des utilisateurs sur les couches SIG et la sécurité associée à ces dernières.

Vous avez besoin d’un conseil, d’une expertise ou d’une mise en place d’une architecture SIG (Serveurs, Bases de données, WebSIG) sur Windows ou Linux? Vous pouvez me contacter par email : contact@geomatick.com.

 

 

Partager l'article
Taggé , , , , .Mettre en favori le Permaliens.

A propos Florian Delahaye

Passionné de Géomatique

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *