Loading ...

Creare API REST in Kotlin con Javalin.io

Creare API REST in Kotlin con Javalin.io

Abbiamo già visto Javalin.io, ma in ambito Java.

Oggi vediamo come usarlo in Kotlin (praticamente è la stessa cosa).

Se usate Maven, aggiungete questa dipendenza:

        <dependency>
            <groupId>io.javalin</groupId>
            <artifactId>javalin</artifactId>
            <version>1.6.1</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

fun main(args: Array<String>) {
    val app = Javalin.start(8080)
    app.get("/") { ctx ->
        ctx.result("Default route")
        println("HOST:" + ctx.host())
        println("IP:" + ctx.ip())
    }

    app.before("/ciao/*") {
        ctx -> 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 -> println("Operazioni da fare dopo che aver richiamato il path!")
    }
}

Qui creiamo due 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!