Introduzione a Spark

Introduzione a Spark

Da non confondere con Apache Spark, Spark è un frameowrk per applicazioni web per Java.

L'ho trovato, almeno inizialmente, abbastanza semplice da usare, e anche abbastanza familiare se avete già usato Node.js ed Express.

Inoltre, di default, utilizza una versione embedded di Jetty, e quindi non ci sono server da configurare (ma potete comunque usarne un altro se volete).

Iniziamo a vedere qualcosa; useremo Maven, e va bene qualsiasi IDE (io uso Netbeans).

Create il progetto ed agguingete questa dipendenza nel vostro pom.xml:

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

Compilate il progetto per scaricare le librerie.

A questo punto create una classe con il metodo main:

import static spark.Spark.*;

public class Main {

    public static void main(String[] args) {
        get("/", (req, res) -> "Home page");

        get("/nome/:nome", (req, res) -> {
            return "Il tuo nome è " + req.params(":nome");
        });
    }

}

Abbiamo configurato due routes, di cui la seconda richiede un parametro:

  • http://localhost:4567/
  • http://localhost:4567/nome/mattepuffo

La porta di default è la 4567, ma è possibile cambiarla:

import static spark.Spark.*;

public class Main {

    public static void main(String[] args) {
        port(8080);

        get("/", (req, res) -> "Home page");

        get("/nome/:nome", (req, res) -> {
            return "Il tuo nome è " + req.params(":nome");
        });
    }

}

Volendo è possibile raggruppare le routes simili con path:

import static spark.Spark.*;

public class Main {

    public static void main(String[] args) {
        port(8080);

        get("/", (req, res) -> "Home page");

        path("/user", () -> {
            get("/nome/:nome", (req, res) -> {
                return "Il tuo nome è " + req.params(":nome");
            });
            get("/cognome/:cognome", (req, res) -> {
                return "Il tuo cognome è " + req.params(":cognome");
            });
            delete("/delete", (req, res) -> {
                // Cancella username
            });
        });
    }

}

Quindi le routes qua sarebbero:

  • http://localhost:4567/
  • http://localhost:4567/user/nome/matte
  • http://localhost:4567/user/cognome/puffo
  • http://localhost:4567/user/delete

Ovviamente non si conclude qui, le possibilità sono tantissime, ma devo ancora sudiarmelo.

In un prossimo articolo vedremo come usare i template.

Enjoy!