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!
java javalin.io jetty context rest
Commentami!