Skip to content
Server Plugin

状态页面

所需依赖项io.ktor:ktor-server-status-pages

代码示例 status-pages

原生服务器
Ktor supports Kotlin/Native and allows you to run a server without an additional runtime or virtual machine.
支持:✅

StatusPages 插件允许 Ktor 应用程序根据抛出的异常或状态码对任何失败状态做出适当响应

添加依赖项

要使用 StatusPages,您需要在构建脚本中包含 ktor-server-status-pages 构件:

Kotlin
Groovy
XML

安装 StatusPages

要将 StatusPages 插件安装到应用程序中,请将其传递给指定

模块
Modules allow you to structure your application by grouping routes.
中的 install 函数。 下面的代码片段展示了如何安装 StatusPages ...

  • ... 在 embeddedServer 函数调用内部。
  • ... 在显式定义的 module(它是 Application 类的扩展函数)内部。
kotlin
kotlin

配置 StatusPages

StatusPages 插件提供了三个主要的配置选项:

  • exceptions:根据映射的异常类配置响应
  • status:针对状态码值配置响应
  • statusFile:配置来自类路径的文件响应

异常

exception 处理程序允许您处理导致 Throwable 异常的调用。在最基本的情况下,可以为任何异常配置 500 HTTP 状态码:

kotlin
install(StatusPages) {
    exception<Throwable> { call, cause ->
        call.respondText(text = "500: $cause" , status = HttpStatusCode.InternalServerError)
    }
}

您还可以检查特定的异常并响应所需的内容:

kotlin
install(StatusPages) {
    exception<Throwable> { call, cause ->
        if(cause is AuthorizationException) {
            call.respondText(text = "403: $cause" , status = HttpStatusCode.Forbidden)
        } else {
            call.respondText(text = "500: $cause" , status = HttpStatusCode.InternalServerError)
        }
    }
}

状态

status 处理程序提供了根据状态码响应特定内容的能力。下面的示例展示了如果服务器上缺少资源(404 状态码),如何对请求做出响应:

kotlin
install(StatusPages) {
    status(HttpStatusCode.NotFound) { call, status ->
        call.respondText(text = "404: Page Not Found", status = status)
    }
}

状态文件

statusFile 处理程序允许您根据状态码提供 HTML 页面。假设您的项目在 resources 文件夹中包含 error401.htmlerror402.html HTML 页面。在这种情况下,您可以按如下方式使用 statusFile 处理 401402 状态码:

kotlin
install(StatusPages) {
    statusFile(HttpStatusCode.Unauthorized, HttpStatusCode.PaymentRequired, filePattern = "error#.html")
}

statusFile 处理程序会将配置的状态列表中的任何 # 字符替换为状态码的值。

您可以在此处找到完整示例:status-pages