Skip to content

代码内配置

代码内配置

Ktor 允许您直接在代码中配置各种服务器参数,包括主机地址、端口、

服务器模块
模块允许您通过对路由进行分组来构建应用程序结构。
等。配置方法取决于您设置服务器的方式 —— 使用
embeddedServer 或 EngineMain
了解如何根据您的应用程序部署需求创建服务器。

使用 embeddedServer 时,您可以通过将所需参数直接传递给该函数来配置服务器。 embeddedServer 函数接受用于配置服务器的不同形参,包括

服务器引擎
了解处理网络请求的引擎。
、服务器侦听的主机和端口以及其他配置。

在本节中,我们将查看几个运行 embeddedServer 的不同示例,说明如何根据您的需要配置服务器。

基础配置

下面的代码段展示了使用 Netty 引擎和 8080 端口的基础服务器设置。

kotlin

请注意,您可以将 port 形参设置为 0 以在随机端口上运行服务器。 embeddedServer 函数会返回一个引擎实例,因此您可以在代码中使用 ApplicationEngine.resolvedConnectors 函数获取端口值。

引擎配置

embeddedServer 函数允许您使用 configure 形参传递引擎特定的选项。该形参包含所有引擎通用的选项,由 ApplicationEngine.Configuration 类提供。

下面的示例展示了如何使用 Netty 引擎配置服务器。在 configure 块中,我们定义了一个 connector(连接器)来指定主机和端口,并自定义了各种服务器参数:

kotlin

connectors.add() 方法使用指定的主机 (127.0.0.1) 和端口 (8080) 定义了一个连接器。

除了这些选项之外,您还可以配置其他特定于引擎的属性。

Netty

Netty 特定的选项由 NettyApplicationEngine.Configuration 类提供。

kotlin

Jetty

Jetty 特定的选项由 JettyApplicationEngineBase.Configuration 类提供。

您可以在 configureServer 块中配置 Jetty 服务器,该块提供了对 Server 实例的访问。

使用 idleTimeout 属性来指定连接在关闭之前可以空闲的时间长度。

kotlin

CIO

CIO 特定的选项由 CIOApplicationEngine.Configuration 类提供。

kotlin

Tomcat

如果您使用 Tomcat 作为引擎,您可以使用 configureTomcat 属性进行配置,该属性提供了对 Tomcat 实例的访问。

kotlin

自定义环境

下面的示例展示了如何使用由 ApplicationEngine.Configuration 类表示的自定义配置运行带有多个连接器端点的服务器。

kotlin

有关完整示例,请参阅 embedded-server-multiple-connectors

TIP

您还可以使用自定义环境来 提供 HTTPS 服务

命令行配置

Ktor 允许您使用命令行实参动态配置 embeddedServer。在需要在运行时指定端口、主机或超时等配置的情况下,这特别有用。

为了实现这一点,请使用 CommandLineConfig 类将命令行实参解析为配置对象,并将其在配置块中传递:

kotlin

在此示例中,来自 Application.ConfigurationtakeFrom() 函数被用于替代引擎配置值,例如 porthostloadCommonConfiguration() 函数从根环境加载配置,例如超时设置。

要运行服务器,请按以下方式指定实参:

shell

TIP

对于静态配置,您可以使用配置文件或环境变量。 要了解更多信息,请参阅 文件中的配置