ステータスページ
必須の依存関係: io.ktor:ktor-server-status-pages
コード例: status-pages
StatusPagesプラグインは、Ktorアプリケーションがスローされた例外やステータスコードに基づいて、あらゆる失敗状態に適切に応答できるようにします。
依存関係の追加
StatusPages
を使用するには、ktor-server-status-pages
アーティファクトをビルドスクリプトに含める必要があります。
StatusPagesのインストール
アプリケーションにStatusPages
プラグインをインストールするには、 指定された
install
関数に渡します。 以下のコードスニペットは、StatusPages
をインストールする方法を示しています。 embeddedServer
関数呼び出しの内部。Application
クラスの拡張関数である、明示的に定義されたmodule
の内部。
StatusPagesの設定
StatusPages
プラグインには、主に3つの設定オプションがあります。
例外
exception
ハンドラーを使用すると、Throwable
例外が発生した呼び出しを処理できます。最も基本的なケースでは、任意の例外に対して500
HTTPステータスコードを設定できます。
install(StatusPages) {
exception<Throwable> { call, cause ->
call.respondText(text = "500: $cause" , status = HttpStatusCode.InternalServerError)
}
}
特定の例外をチェックし、必要なコンテンツで応答することもできます。
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
ステータスコード)のリクエストに応答する方法を示しています。
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
ステータスコードを次のように処理できます。
install(StatusPages) {
statusFile(HttpStatusCode.Unauthorized, HttpStatusCode.PaymentRequired, filePattern = "error#.html")
}
statusFile
ハンドラーは、設定されたステータスのリスト内で、#
文字をステータスコードの値に置き換えます。
完全な例はこちらにあります: status-pages。