簡介
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
複製程式碼