Loading ...

Creare API REST in Java con Javalin.io

Creare API REST in Java con Javalin.io

In questo articolo avevamo visto una introduzione a Java Spark.

Oggi vediamo Javalin.io, che nasce proprio come fork di Spark.

Forse questo mi è piaciuto di più, anche perchè nasce sia per Java che per Kotlin (di cui prima o poi vedremo un esempio.

Se usate Maven, aggiungete questa dipendenza:

        <dependency>
            <groupId>io.javalin</groupId>
            <artifactId>javalin</artifactId>
            <version>1.3.0</version>
        </dependency>

Questa è la dipendenza minima, in quanto il web server è integrato (Jetty); ma uscirà questo warning:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
-------------------------------------------------------------------
Javalin: In the Java world, it's common to add your own logger.
Javalin: To easily fix the warning above, get the latest version of slf4j-simple:
Javalin: https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
Javalin: then add it to your dependencies (pom.xml or build.gradle)
Javalin: Visit https://javalin.io/documentation#logging if you need more help

Decidete voi se installare anche questa dipendenza.

Inoltre, per visualizzare l'output in formato JSON, viene richiesto Jackson.

Questo un esempio di codice:

import io.javalin.Javalin;

public class Main {

    public static void main(String[] args) {
        Javalin app = Javalin.start(8080);

        app.get("/", ctx ->{
            ctx.result("Default route");
            System.out.println("HOST: " + ctx.host());
            System.out.println("IP: " + ctx.ip());
        });

        app.before("/ciao/*", ctx -> {
            System.out.println("Operazioni da fare prima che venga richiamato il path!");
        });
        app.get("/ciao/:nome", ctx -> ctx.result("Ciao " + ctx.param("nome")));
        app.after("/ciao/*", ctx -> {
            System.out.println("Operazioni da fare dopo che aver richiamato il path!");
        });
    }
}

Qui creiamo dua routes:

  • nella root (http://localhost:8080) visualiziamo un Default route sulla pagina, e stampiamo alcune info in console
  • nella seconda (http://localhost:8080/ciao/NOME_CHE_VUOI) stampiamo il nome nella pagina; ma vediamo anche come volgere operazioni prima di richiamare la route (before) e dopo averla richiamata (after)

Inoltre vi consiglio di guardare bene la pagina Context, che spiega tutte le opzioni disponibili.

Dategli un'occhiata, sembra un progetto interessante.

Enjoy!