Creare una web api in Kotlin con Ktor
Ktor è un web framework per Kotlin per la creazione di applicazione asincrone sia client che server.
In questo articolo vediamo come usarlo per creare una web api; ovviamente faremo un esempio basico.
Io ho creato il progetto partendo dalla pagina di start, aggiungendo i plugins GSON e Routing.
Questo il mio file Application.kt, da dove parte tutta l'applicazione:
import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import mp.com.plugins.*
fun main() {
embeddedServer(Netty, port = 8080, host = "0.0.0.0", module = Application::module)
.start(wait = true)
}
fun Application.module() {
configureSerialization()
configureRouting()
}
Nella "cartella" plugins ho due file.
Serialization.kt dove attivo il plugin per il JSON:
import io.ktor.serialization.gson.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.application.*
fun Application.configureSerialization() {
install(ContentNegotiation) {
gson {}
}
}
E Routing.kt, dove metteremo tutte le nostre rotte:
import io.ktor.server.routing.*
import io.ktor.server.response.*
import io.ktor.server.application.*
import mp.com.models.Customer
fun Application.configureRouting() {
routing {
get("/") {
val listCustomer = listOf<Customer>(
Customer(1, "nome 1", "cognome 1"),
Customer(2, "nome 2", "cognome 2"),
Customer(3, "nome 3", "cognome 3"),
)
call.respond(listCustomer)
}
}
}
Per ora ce ne è una sola che ci manda in output la lista in formato JSON.
Poi nella "cartella" models ci mettiamo le classi che fanno contenitori; ad esempio Customer.kt:
data class Customer(val id: Int, val firstName: String, val lastName: String)
E direi che è tutto!
Magari prossimamente approfondiamo qualche cosa, come la connessione ad un db.
Enjoy!
kotlin ktor json gson
Commentami!