简介
Ktor是一个轻松构建后台应用程序的框架:Web应用、Http服务、移动和浏览器应用程序。Ktor服务器应用(application)是使用已配置的服务器引擎监听一个或者多个端口的自定义程序,由带有应用逻辑的模块组成,其中安装了一系列的特性,如路由、会话、以及HTTP/S 1.x/2.x和Websocket请求。
项目结构
在IntelliJ IDEA安装的插件Ktor生成的模版项目主要包含:
-resources -application.conf ... -src -Application.kt ...复制代码
在application.conf中可以配置模块、端口等:
ktor { deployment { port = 8080 port = ${?PORT} } application { modules = [ com.example.ApplicationKt.module, com.example.ApplicationKt.module2 ] }}复制代码
在modules项可以配置模块数组(Application.kt编译生成的class文件会在文件名后加上Kt)。
Application
Application实例是Ktor应用的主要单元,当请求(HTTP、HTTP/2或者Websocket)进来时将其转换为ApplicationCall并经过一个隶属于Application的流水线。该流水线由一个或者多个先前安装的拦截器组成,提供像路由、压缩这样的结束请求处理的功能。
模块
Ktor模块只是一个接受者为Application类的用户自定义的扩展函数,负责配置服务器流水线、安装特性、注册路由、处理请求。
注:必须在application.conf文件中指定服务器启动要加载的模块。
fun Application.mymodule(){ routing{ get("/demo"){ call.respondText("Hello World!") } } }复制代码
也可以将模块函数拆分为几个较小的函数或者类。
使用完整限定名来引用模块(类的完整限定名和方法名,以.分隔):
com.example.myapp.ApplicationKt.mymodule复制代码