ktor
重要要点
- Ktor是由JetBrains创建和维护的OSS Apache 2项目。
- 它可用于创建异步连接的系统。
- Ktor大量使用Kotlin功能,包括协程和语言结构。
- 这是低礼节,因为它只需要很少的代码和配置即可启动和运行系统。
- Ktor是多平台的,可以在多种系统和服务器容器技术上运行。
什么是Ktor?
Ktor(发音为Kay-tor)是使用Kotlin和协程从头开始构建的框架。 它使我们能够创建可以运行并针对多个平台的客户端和服务器端应用程序。 非常适合需要HTTP和/或套接字连接的应用程序。 它们可以是HTTP后端和RESTful系统,无论它们是否以微服务方法进行架构。
Ktor是从其他框架(如Wasabi和Kara)的灵感中诞生的,旨在最大程度地利用Kotlin提供的某些语言功能(例如DSL和协程)。 在创建连接系统时,Ktor提供了高性能,异步,多平台的解决方案。
当前,Ktor客户端可在Kotlin目标的所有平台上运行,即JVM,JavaScript和Native。 目前,Ktor服务器端仅限于JVM。 在本文中,我们将研究如何使用Ktor进行服务器端开发。
服务器上的Ktor
与Ktor的Hello World应用程序等效为
fun main() {
val server = embeddedServer(Netty, 8080) {
routing {
get("/home") {
call.respondText("Hello Ktor!", ContentType.Text.Plain)
}
}
}
server.start(true)
}
如果您有使用ExpressJS或Sinatra之类的框架的经验,那么这段代码可能看起来很熟悉。 首先,我们创建一个服务器实例,该实例使用Netty作为底层引擎并监听端口8080。
下一步是定义响应请求的实际路由。 在这种情况下,我们说的是,当对URL / home发出请求时,服务器应通过发送文本Hello Ktor做出响应! 以纯文本格式。
最后,我们启动服务器并告诉它等待,从而防止我们的应用程序立即终止。
就涉及Ktor而言,这非常简单。 如果要添加更多路由,原则上我们需要做的就是定义更多HTTP动词以及路由功能中的相应URL。 例如,如果我们想响应POST,我们只需添加另一个函数。
routing {
get("/") {
call.respondText("Hello Ktor!", ContentType.Text.Plain)
}
post("/home") {
// Act on request
}
}
随处可见的功能
如果您不熟悉Kotlin,您可能想知道这些构造是什么,以及