程式碼中的配置
程式碼中的配置
Ktor 允許您直接在程式碼中配置各種伺服器參數,包括主機位址、port、
使用 embeddedServer 時,您可以透過將所需的參數直接傳遞給該函式來配置伺服器。 embeddedServer 函式接受用於配置伺服器的不同參數,包括
在本節中,我們將查看幾個執行 embeddedServer 的不同範例,說明如何配置伺服器以發揮其優勢。
基本配置
下方的程式碼片段顯示了使用 Netty 引擎與 8080 port 的基本伺服器設定。
請注意,您可以將 port 參數設定為 0 以在隨機 port 上執行伺服器。 embeddedServer 函式會回傳一個引擎執行個體,因此您可以使用 ApplicationEngine.resolvedConnectors 函式在程式碼中獲取 port 值。
引擎配置
embeddedServer 函式允許您使用 configure 參數傳遞特定於引擎的選項。此參數包含所有引擎通用的選項,並由 ApplicationEngine.Configuration 類別公開。
下方的範例顯示如何使用 Netty 引擎配置伺服器。在 configure 區塊內,我們定義了一個 connector 來指定主機與 port,並自訂各種伺服器參數:
connectors.add() 方法定義了一個具有指定主機 (127.0.0.1) 與 port (8080) 的連接器。
除了這些選項之外,您還可以配置其他特定於引擎的屬性。
Jetty
特定於 Jetty 的選項由 JettyApplicationEngineBase.Configuration 類別公開。
您可以在 configureServer 區塊內配置 Jetty 伺服器,該區塊提供了對 Server 執行個體的存取。
使用 idleTimeout 屬性指定連線在關閉前可以保持閒置的時間長度。
自訂環境
下方的範例顯示如何使用 ApplicationEngine.Configuration 類別代表的自訂配置,執行具有多個連接器端點的伺服器。
如需完整範例,請參閱 embedded-server-multiple-connectors 。
TIP
您也可以使用自訂環境來 提供 HTTPS 服務 。
命令列配置
Ktor 允許您使用命令列引數動態地配置 embeddedServer。這在需要在執行階段指定 port、主機或逾時等配置的情況下特別有用。
為此,請使用 CommandLineConfig 類別將命令列引數解析為配置物件,並將其傳遞至配置區塊中:
在此範例中,來自 Application.Configuration 的 takeFrom() 函式用於覆蓋引擎配置值,例如 port 和 host。 loadCommonConfiguration() 函式則從根環境載入配置,例如逾時。
要執行伺服器,請按以下方式指定引數:
TIP
對於靜態配置,您可以使用設定檔或環境變數。 若要了解更多,請參閱 檔案中的配置 。