Publié le 06/09/2017, rédigé par Davy CLAISSE

Sparkjava

Créer un micro-service en deux minutes avec Sparkjava

Sparkjava késako ?

Sparkjava est un framework web utilisable en Java 8 et Kotlin

Comment ajouter Sparkjava à mon projet ?

Avec Maven : En ajoutant la dépendance spark-core au fichier pom.xml de votre projet.

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

Avec Gradle : En ajoutant la dépendance spark-core au fichier build.gradle de votre projet.

compile "com.sparkjava:spark-core:2.6.0"

Principe de base

Sparkjava est taillé pour l'écriture d'API REST. En conséquence

Le principe est simplissime

Comment associer une action à une URL ?

Il y a trois syntaxes possibles :

Exemple avec la syntaxe classique

Ce code est le plus volumineux mais il a l'avantage de rendre les contrôleurs réutilisables (cas du même contrôleur pour du GET et du POST) ou encore de définir une hiérarchie d'héritage entre-eux :

import spark.Spark;
import spark.Route;

public class Main {
    public static void main(String... args) {
        Spark.get("/mon_url"
    - new MyController());
    }
}

class MyController implements Route {
    @Override
    public Object handle(Request request
    - Response response) throws Exception {
        // Le code à exécuter est ici. Vous pouvez retourner une String
        // contenant au choix du HTML
    - du JSON ou tout autre chose.
        return "MON ACTION";
    }
}
Exemple avec la syntaxe Java 8

Ce code est très compact et très pratique pour effectuer de petits tests

public class Main { public static void main(String... args) { Spark.get("/mon_url"

Exemple avec les classes anonymes

C'est à mon sens le code le moins pratique des trois car il allie la lourdeur de l'écriture classique avec la non réutilisabilité des lamdbas de Java 8.

import spark.Spark;
import spark.Route;

public class Main {
    public static void main(String... args) {
        Spark.get("/mon_url"
    - new Route() {
            @Override
            public Object handle(Request request
    - Response response) throws Exception {
                // Le code à exécuter est ici. Vous pouvez retourner une String
                // contenant au choix du HTML
    - du JSON ou tout autre chose.
                return "MON ACTION";
            }
        });
    }
}

Voilà