1、Ktor學習-Application;

Melrose發表於2019-03-04

簡介

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