httprouter는 Golang의 인기 있는 라우팅 미들웨어로, 특정 경로나 패턴에 대한 사용자 정의 핸들러를 등록할 수 있습니다. 경로나 리소스를 찾을 수 없는 경우 이러한 404 Not Found 응답을 직접 처리할 수 있습니다.
httprouter.Router 유형에는 NotFound라는 필드가 있습니다. 이는 http.Handler입니다. 즉, 이 필드에 사용자 정의 핸들러를 할당하여 404 응답을 처리할 수 있습니다.
사용자 정의 NotFound 핸들러를 생성하려면 서명이 있는 함수를 정의해야 합니다. :
func(http.ResponseWriter, *http.Request)
그런 다음 http.HandlerFunc 도우미 함수를 사용하여 이 함수를 http.Handler로 변환할 수 있습니다.
다음은 방법에 대한 예입니다. 사용자 정의 NotFound 핸들러를 설정할 수 있습니다.
<code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/plain; charset=utf-8") w.WriteHeader(http.StatusNotFound) w.Write([]byte("My own Not Found handler.")) w.Write([]byte(" The page you requested could not be found.")) } var router *httprouter.Router = ... // Your router value router.NotFound = http.HandlerFunc(MyNotFound)</code>
이 사용자 정의 핸들러는 404 Not Found 응답이 발견될 때 httprouter에 의해 자동으로 호출됩니다.
어떤 경우에는 다른 핸들러 내에서 NotFound 핸들러를 수동으로 호출해야 할 수도 있습니다. ResponseWriter 및 *Request를 MyNotFound 함수에 전달하거나 라우터의 NotFound 메소드에 직접 전달하여 이를 수행할 수 있습니다.
<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) { exists := ... // Find out if requested resource is valid and available if !exists { MyNotFound(w, r) // Pass ResponseWriter and Request // Or via the Router: // router.NotFound(w, r) return } // Resource exists, serve it // ... }</code>
위 내용은 사용자 정의 핸들러를 사용하여 httprouter에서 404 오류 처리를 사용자 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!