Thématiques principales

lundi 14 janvier 2019

Server Web leger : Spark

Petit article pour parler rapidement d’un framework permettant de faire des webservice REST. Il s'appelle Spark [spark-rest] et non il n'a rien à voir avec le framework Big Data Spark [spark-bd] dont on parlera aussi prochainement.

Non ici on parle de Spark [spark-rest], un framework complet mais très simple à utiliser et très rapide à mettre en oeuvre. Il intègre un serveur web permettant l'écoute d’un port de connexion.

Le plus simple est de mettre en oeuvre. Commençons par importer l'artefact maven associé.


<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.8.0</version>
</dependency>

Ensuite tout passe par l’utilisation de la classe statique “spark.Spark”. Celle ci fourni les moyens d'écoute sur un port (reconfigurable)


Spark.port(port);

Ensuite il reste à définir le mapping entre url et path avec des méthodes à exécuter lors de l'utilisation de ces urls. Par exemple on peut faire à un appel d’une méthode sans paramètres:


Spark.get("/bundles", (request, response) -> this.bundleList(response));

Lorsqu'il y a des paramètres à manipuler alors on utilise la notation :variable, par exemple:


Spark.get("/bundle/:bundleName/:version", (request, response) -> this.bundleInfo(response,request.params(":bundleName"),request.params(":version")));

Il est bien sur possible d’utiliser d’autres primitives http que GET, comme POST, CREATE, DELETE. Je vous renvoie sur la doc pour ces points, n’en ayant pas eut besoin.

Ensuite il ne faut pas oublier que Spark est un serveur web et que du coup on peut aussi le configurer de façon à rendre accessible des ressources statiques. Pour cela on utilise la commande


Spark.staticFiles.externalLocation("/var/www/resources");

Voila j'avais parlé d'un article court, et avec ces quelques fonctions on peut déjà faire pas mal de choses. L'implémentation dont est extrait les exemples est dans le bundle OSGI tc-osgi-bundle-manager du depot Github [github]

Il est par contre à noter que ce code est voué à être déplacé dans un bundle dédié et qu’à terme il ne sera plus accessible à cette url. j’ajouterai une note à ce propos à ce moment là… ou pas… lol

En fait depuis il est dispo dans [gh-misc] et utilisé dans la composition docker associée [doc-spark]

Références

[spark-rest] http://sparkjava.com/
[spark-bd] http://spark.apache.org/
[github] https://github.com/collonville-tom/tc-equinox-loader/tree/master/tc-osgi-bundle-manager
[gh-misc] https://github.com/collonville-tom/tc-misc-osgi
[doc-spark] https://cloud.docker.com/u/collonvtom/repository/docker/collonvtom/tc-osgi-bundle-spark

Aucun commentaire:

Enregistrer un commentaire