Kotlin异步框架Ktor 2.0发布,新增插件功能
经过一年多的开发,用于创建异步客户端和服务器应用程序的Kotlin框架Ktor2.0已经发布,其中包含了新的功能和突破性变化。
在服务器端,Ktor 2.0引入了一个名为Plugins的新功能,之前被称为Features,以提高框架的可扩展性。顾名思义,它允许实施插件架构,以简化的方式扩展功能。
它还引入了对Kotlin/Native的支持,以补充Ktor 1.6中增加的对GraalVM的现有支持。其他改进包括随机端口支持、改进的测试API、类型安全的路由、XML序列化和插件的子路由。
在客户端,Ktor 2.0带来了一个简化的API来管理常见的HTTP请求;响应现在的类型是 HttpResponse并且可以简单地用bodyAsText访问响应体。
重试现在是客户端内置的,允许指定重试之间的时间量。Ktor 2.0还在客户端增加了一个内容协商功能,而在服务器端已经实现了。
除了上述功能外,客户端还包括用于认证的快捷API,如 **basic()**和 **bearer()**助手函数。
为了帮助从以前的版本迁移到新的2.0版本,Ktor团队提供了文档和一个包含在IntelliJ IDEA中的迁移工具,其目的是修复与突破性变化和重构包有关的所有问题。
用Ktor创建一个简单的服务器就像:
fun main(args: Array<String>) {
embeddedServer(Netty, 8080) {
routing {
get("/") {
call.respondText("Hello, world!", ContentType.Text.Html)
}
}
}.start(wait = true)
}
上面的代码运行了一个嵌入式Web服务器,在 localhost:8080,安装了一个路由插件,当收到根路径上的GET HTTP请求时,会回复 "Hello, world"。
Ktor应用程序可以托管在任何支持Servlet 3.0+ API的Servlet容器中,如Tomcat,或使用Netty或Jetty独立运行。Ktor使用Kotlin coroutines以直观的命令式流程实现异步编程,上述所有服务器容器都在使用异步I/O设施以避免阻塞线程。
此外,Ktor支持Websocket协议,用Micrometer指标进行监控,用JWT和OAuth进行授权,以及各种模板引擎,如Mustache、Thymeleaf和Velocity。