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.html 和 error402.html HTML 页面。在这种情况下,您可以按如下方式使用 statusFile 处理 401 和 402 状态码:
kotlin
install(StatusPages) {
statusFile(HttpStatusCode.Unauthorized, HttpStatusCode.PaymentRequired, filePattern = "error#.html")
}statusFile 处理程序会将配置的状态列表中的任何 # 字符替换为状态码的值。
您可以在此处找到完整示例:status-pages。
