Skip to content
Server Plugin

상태 페이지

필수 종속성: io.ktor:ktor-server-status-pages

코드 예시: status-pages

네이티브 서버
Ktor는 Kotlin/Native를 지원하며 추가 런타임이나 가상 머신 없이 서버를 실행할 수 있게 합니다.
지원: ✅

StatusPages 플러그인은 Ktor 애플리케이션이 발생한 예외 또는 상태 코드에 따라 모든 실패 상태에 적절하게 응답하도록 허용합니다.

종속성 추가

StatusPages를 사용하려면 ktor-server-status-pages 아티팩트를 빌드 스크립트에 포함해야 합니다:

Kotlin
Groovy
XML

StatusPages 설치

StatusPages 플러그인을 애플리케이션에 설치하려면, 지정된

모듈
모듈을 사용하면 라우트를 그룹화하여 애플리케이션을 구조화할 수 있습니다.
install 함수에 전달하세요. 아래 코드 스니펫은 StatusPages을 설치하는 방법을 보여줍니다...

  • ... embeddedServer 함수 호출 내부.
  • ... Application 클래스의 확장 함수인 명시적으로 정의된 module 내부.
kotlin
kotlin

StatusPages 구성

StatusPages 플러그인에서 제공하는 세 가지 주요 구성 옵션이 있습니다:

  • 예외: 매핑된 예외 클래스를 기반으로 응답을 구성합니다.
  • 상태: 상태 코드 값에 대한 응답을 구성합니다.
  • 상태 파일: 클래스패스에서 파일 응답을 구성합니다.

예외

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.