상태 페이지
필수 종속성: io.ktor:ktor-server-status-pages
코드 예시: status-pages
StatusPages 플러그인은 Ktor 애플리케이션이 발생한 예외 또는 상태 코드에 따라 모든 실패 상태에 적절하게 응답하도록 허용합니다.
종속성 추가
StatusPages
를 사용하려면 ktor-server-status-pages
아티팩트를 빌드 스크립트에 포함해야 합니다:
StatusPages 설치
StatusPages
플러그인을 애플리케이션에 설치하려면, 지정된
install
함수에 전달하세요. 아래 코드 스니펫은 StatusPages
을 설치하는 방법을 보여줍니다... - ...
embeddedServer
함수 호출 내부. - ...
Application
클래스의 확장 함수인 명시적으로 정의된module
내부.
StatusPages 구성
StatusPages
플러그인에서 제공하는 세 가지 주요 구성 옵션이 있습니다:
예외
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.