een lange titel

Spark Framework demo in Kotlin

Het Spark micro framework kan je ook in Kotlin programmeren.

Dit framework is oorspronkelijk bedoeld voor Java 8. In deze versie van Java werden de lambdafuncties geĆÆntroduceerd en juist dat is ook een kenmerk van Kotlin. De volgende Kotlin Main.kt code toont een Spark controller die de nodige routing verzorgt.

package com.mmk

import com.google.gson.Gson
import spark.Spark
import spark.Spark.get

fun main(args: Array<String>)
{
   val main = Main()
   main.run()
}

data public class Name(val fname: String, val lname: String)

class Main
{
   val gson = Gson()
   fun run()
   {
      Spark.staticFileLocation("/public")

      get("/hello", {req,res -> "Hello World"})
      get("/hello/:name", {req,res -> "Hello " + req.params(":name")})
      get("/hello/:fname/:lname", 
      {
         req,res ->
         val fname = req.params(":fname") 
         val lname = req.params(":lname")
         Name(fname,lname)
      },
      {
         obj ->
         gson.toJson(obj)
      })
   }
}

De Main klasse heeft een run() methode waarin met get() oproepen de verschillende routes gedefiniƫerd worden. In de URL syntax kan je ook variabelen plaatsen, bijvoorbeeld "/hello/:fname/:lname". In elke route wordt met een lambdafunctie aangegeven wat de respons voor de aanvraag is. Bij de derde route wordt JSON teruggegeven.

De volgende build.gradle beschrijft alle afhankelijkheden voor de compilatie.

buildscript {
   ext.kotlin_version='1.0.1'
   ext.gson_version='2.6.2'
   ext.sparkjava_version='2.3'

   repositories {
      mavenCentral()
   }
   dependencies {
      classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
   }
}

apply plugin:'java'
apply plugin:'kotlin'
apply plugin:'application'
apply plugin:'idea'

mainClassName = 'com.mmk.MainKt'

defaultTasks 'run'

repositories {
   mavenCentral()
}
dependencies {
   compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
   compile "com.google.code.gson:gson:$gson_version"
   compile "com.sparkjava:spark-core:$sparkjava_version"
   testCompile 'junit:junit:4.11'
   testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}

Je kan het voorbeeld starten met:

gradle run

Deze URL’s kan je dan uitproberen.

http://localhost:4567/hello
http://localhost:4567/hello/jan
http://localhost:4567/hello/jan/jansen