사용자가 존재하지 않는 URL을 요청할 때 HTTP 서버는 일반적으로 기본 "404 페이지를 찾을 수 없음" 오류 메시지를 표시합니다. . 보다 유익하고 맞춤화된 환경을 제공하려면 맞춤 오류 페이지 핸들러를 구현해야 합니다.
Go용 표준 HTTP 패키지에는 처리되지 않은 모든 요청을 처리하고 맞춤 오류 페이지를 표시하는 메커니즘이 있습니다. . 이를 달성하는 방법을 살펴보겠습니다.
사용자 정의 오류 처리기 함수
사용자 정의 오류 페이지를 처리하는 함수를 만듭니다. 이 함수는 세 가지 인수를 사용합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!