Popularity
8.5
Declining
Activity
0.0
Stable
947
35
46
Programming language: Kotlin
License: Apache License 2.0
Tags:
Web
Latest version: v1.0.0-alpha
spark-kotlin alternatives and similar libraries
Based on the "Web" category.
Alternatively, view spark-kotlin alternatives based on common mentions on social networks and blogs.
-
vertx-lang-kotlin
This module provides Kotlin language bindings including DSL and extension functions for vert.x 3 -
skrape.it
HTML testing and web scraping library providing an intuitive DSL to receive and either extract or check markup (a jSoup wrapper DSL with extra functionality) 🆕 -
lambda-kotlin-request-router
A REST request routing layer for AWS lambda handlers written in Kotlin -
bootique-kotlin
Provides extension function and features for smooth development with Bootique and Kotlin. -
Zeko-RestApi
Fun, simple & lightweight async RESTful API framework on top of Vert.x. Automatic Swagger doc & code generation via Kotlin kapt -
graphql-kotlin-toolkit
GraphQL toolkit for Kotlin (includes code generator and spring boot integration)
Get performance insights in less than 4 minutes
Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.
Sponsored
scoutapm.com
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of spark-kotlin or a related project?
README
spark-kotlin
A Spark DSL in idiomatic kotlin.
Authors:
- Per Wendel, @perwendel
- Love Löfdahl, @lallemupp
Dependency:
Maven:
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-kotlin</artifactId>
<version>1.0.0-alpha</version>
</dependency>
Gradle:
compile "com.sparkjava:spark-kotlin:1.0.0-alpha"
Documentation
Routes
// Static API
get("/hello") {
"Hello Spark Kotlin"
}
get("/doc") {
// available (same in instance API)
params()
params("<path-param-name>")
splat()
status()
status(404)
queryParams("<key>")
queryMap()
queryMap("<key>")
attribute("<key>")
attribute("<key>", "<value>")
attributes()
session()
session(create = true)
contentType()
uri()
protocol()
scheme()
host()
port()
pathInfo()
servletPath()
contextPath()
userAgent()
requestMethod()
type()
type(contentType = "application/json")
redirect(location = "/to")
redirect(location = "/to", statusCode = 302)
// has all above and some more
request
response
}
get("/nothing") {
status(404)
"Oops, we couldn't find what you're looking for"
}
get("/saymy/:name") {
params(":name")
}
get("/redirect") {
redirect("/hello")
}
// Instance API
val http = ignite()
http.get("/hello") {
"Hello Spark Kotlin"
}
http.get("/nothing") {
status(404)
"Oops, we couldn't find what you're looking for"
}
http.get("/saymy/:name") {
params(":name")
}
http.get("/redirect") {
redirect("/hello")
}
Initialization DSL
// Static API
config {
port = 5500
ipAddress = "0.0.0.0"
threadPool {
maxThreads = 10
minThreads = 5
idleTimeoutMillis = 1000
}
secure {
keystore {
file = "/etc/secure/keystore"
password = "hardtocrack"
}
truststore {
file = "/etc/secure/truststore"
password = "otherdifficultpassword"
}
needsClientCert = false
}
staticFiles {
location = "/public"
expiryTime = 36000.seconds
headers(
"description" to "static content",
"licence" to "free to use"
)
mimeTypes(
"cxt" to "text/html"
)
}
}
// Instance API
val http = ignite {
port = 5500
ipAddress = "0.0.0.0"
threadPool {
maxThreads = 10
minThreads = 5
idleTimeoutMillis = 1000
}
secure {
keystore {
file = "/etc/secure/keystore"
password = "hardtocrack"
}
truststore {
file = "/etc/secure/truststore"
password = "otherdifficultpassword"
}
needsClientCert = false
}
staticFiles {
location = "/public"
expiryTime = 36000.seconds
headers(
"description" to "static content",
"licence" to "free to use"
)
mimeTypes(
"cxt" to "text/html"
)
}
}
Redirect DSL
// Static API
redirect {
any(
"/from" to "/hello",
"/hi" to "/hello"
)
get(
"/source" to "/target"
)
post(
"/gone" to "/new"
)
}
// Instance API
http.redirect {
any(
"/from" to "/hello",
"/hi" to "/hello"
)
get(
"/source" to "/target"
)
post(
"/gone" to "/new"
)
}
WebSocket DSL (design ongoing)
// Static API
webSocket("/echo") {
opened {
println("[Opened] remote address = " + session.remoteAddress)
}
received {
println("[Received] message = $message")
}
closed {
println("[Closed] code = $code, reason = $reason, session = $session")
}
error {
println("[Error] cause = " + cause)
}
}
// Instance API
http.webSocket("/echo") {
opened {
println("[Opened] remote address = " + session.remoteAddress)
}
received {
println("[Received] message = $message")
}
closed {
println("[Closed] code = $code, reason = $reason, session = $session")
}
error {
println("[Error] cause = " + cause)
}
}
class WebSocketSession
val remote
var idleTimeout
val isOpen
val localAddress
val protocolVersion
val upgradeResponse
val upgradeRequest
val policy
val isSecure
val remoteAddress
fun disconnect()
fun suspend(): Suspension
fun close()
fun close(closeStatus: CloseStatus?)
fun close(statusCode: Int, reason: String?)
fun raw(): Session