Kotlin异步框架Ktor 2.0发布了新的插件功能

187 阅读2分钟

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指标进行监控,用JWTOAuth进行授权,以及各种模板引擎,如MustacheThymeleafVelocity