What is an Application?

预计阅读时间:3分钟

甲Ktor服务器应用程序是一个自定义程序使用听一个或多个端口配置的服务器引擎 ,通过由模块与应用程序逻辑,该安装特征 ,如路由会议压缩等处理HTTP / S的1.x / 2.x和WebSocket请求.

Ktor还提供处理原始套接字的功能,但不作为应用程序及其管道的一部分.

目录:

Application

Application实例是Ktor应用程序的主要单元. 当一个请求进入时(一个请求可以是HTTP,HTTP / 2或WebSocket请求),它将被转换为ApplicationCall并通过Application拥有的管道. 管道由一个或多个预先安装的拦截器组成,这些拦截器提供某些功能,例如路由,压缩等,最终将处理请求.

通常,Ktor程序通过安装和配置功能部件的 模块来配置应用程序管道.

您可以在生命周期部分中阅读有关管道的更多信息.

ApplicationCall

检查有关ApplicationCall专用页面 .

Features

功能是一个单例(通常是一个伴随对象),您可以为管道安装和配置. Ktor包含一些标准功能,但是您可以从社区中添加自己的功能或其他功能. 您可以在任何管道中安装功能,例如应用程序本身或特定的路由.

您可以在其专用页面上阅读有关功能的更多信息.

Modules

Ktor模块只是一个用户定义的函数,它接收Application类,该类负责配置服务器管道,安装功能,注册路由,处理请求等.

您必须在application.conf文件中指定服务器启动时要加载的模块.

一个简单的模块函数如下所示:

Main.kt
package com.example.myapp

fun Application.mymodule() {
    routing {
        get("/") {
            call.respondText("Hello World!")
        }
    }
}

当然,您可以将模块功能拆分为几个较小的功能或类.

模块以其完全限定名称引用:类的完全限定名称和方法名称,以点( . )分隔.

因此,对于该示例,模块的完全限定名称为:

com.example.myapp.MainKt.mymodule

mymoduleApplication类的扩展方法(其中ApplicationReceiver ). 由于它被定义为顶级函数,因此Kotlin会创建一个带有Kt后缀( FileNameKt )的JVM类,并将扩展方法添加为静态方法,并以接收者作为第一个参数. 在这种情况下, com.example.myapp包中的类名称为MainKt ,而Java方法签名将为static public void mymodule(Application app) .

What’s next

by  ICOPY.SITE