>백엔드 개발 >Golang >Go의 표준 HTTP 패키지에서 사용자 정의 404 오류 페이지를 구현하는 방법은 무엇입니까?

Go의 표준 HTTP 패키지에서 사용자 정의 404 오류 페이지를 구현하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-28 08:59:17896검색

How to Implement a Custom 404 Error Page in Go's Standard HTTP Package?

표준 HTTP 패키지로 사용자 정의 404 오류 페이지 표시

사용자가 존재하지 않는 URL을 요청할 때 HTTP 서버는 일반적으로 기본 "404 페이지를 찾을 수 없음" 오류 메시지를 표시합니다. . 보다 유익하고 맞춤화된 환경을 제공하려면 맞춤 오류 페이지 핸들러를 구현해야 합니다.

Go용 표준 HTTP 패키지에는 처리되지 않은 모든 요청을 처리하고 맞춤 오류 페이지를 표시하는 메커니즘이 있습니다. . 이를 달성하는 방법을 살펴보겠습니다.

사용자 정의 오류 처리기 함수

사용자 정의 오류 페이지를 처리하는 함수를 만듭니다. 이 함수는 세 가지 인수를 사용합니다.

  • w(http.ResponseWriter): 사용자 정의 오류 페이지를 보내는 데 사용되는 응답 작성기.
  • r (*http.Request) : 존재하지 않는 개체에 대한 요청 URL.
  • status (int): 오류의 상태 코드(일반적으로 http.StatusNotFound).
func errorHandler(w http.ResponseWriter, r *http.Request, status int) {
    // Set the HTTP status code.
    w.WriteHeader(status)
    // Customize the error response for specific status codes.
    if status == http.StatusNotFound {
        fmt.Fprint(w, "Custom 404 error message")
    }
}

사용자 정의 오류 설정 핸들러

오류 핸들러 기능은 HTTP 서버에 연결되어야 합니다. 이 작업은 지정된 포트에서 서버를 시작하는 http.ListenAndServe 함수에서 수행됩니다.

http.ListenAndServe(":12345", nil)

nil을 모든 요청을 처리하는 사용자 정의 HTTP 요청 핸들러로 바꾸세요.

http.ListenAndServe(":12345", new(http.ServeMux))

ServeMux에서 특정 URL에 대한 원래 경로 핸들러를 추가합니다.

mux := http.NewServeMux()
mux.HandleFunc("/smth/", smthHandler)
mux.HandleFunc("/", homeHandler)

http.ListenAndServe(":12345", mux)

마지막으로 특정 경로 핸들러에서 처리하지 않는 다른 모든 URL을 처리하기 위해 ServeMux에 NotFoundHandler를 추가합니다.

mux.NotFoundHandler = http.HandlerFunc(errorHandler)

예제 코드

위 접근 방식을 구현하는 전체 예제 코드는 다음과 같습니다. 다음과 같습니다:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/smth/", smthHandler)
    mux.HandleFunc("/", homeHandler)
    mux.NotFoundHandler = http.HandlerFunc(errorHandler)

    http.ListenAndServe(":12345", mux)
}

func smthHandler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/smth/" {
        errorHandler(w, r, http.StatusNotFound)
        return
    }
    fmt.Fprint(w, "Welcome to smth")
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
        errorHandler(w, r, http.StatusNotFound)
        return
    }
    fmt.Fprint(w, "Welcome home")
}

func errorHandler(w http.ResponseWriter, r *http.Request, status int) {
    w.WriteHeader(status)
    if status == http.StatusNotFound {
        fmt.Fprint(w, "Custom 404 error message")
    }
}

이 코드는 특정 URL에 대한 경로 핸들러를 정의합니다. (/smth/ 및 /) 그리고 사용자 정의 오류 처리기 함수(errorHandler)를 할당하여 처리되지 않은 다른 모든 요청을 처리합니다. 사용자가 존재하지 않는 URL에 액세스하려고 하면 기본 "404 페이지를 찾을 수 없습니다." 메시지 대신 사용자 정의 404 오류 페이지가 표시됩니다.

위 내용은 Go의 표준 HTTP 패키지에서 사용자 정의 404 오류 페이지를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.