>백엔드 개발 >Golang >HTTP 라우터에서 404 오류를 사용자 정의 처리하는 방법은 무엇입니까?

HTTP 라우터에서 404 오류를 사용자 정의 처리하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 11:39:30620검색

How to Custom Handle 404 Errors with HTTP Router?

HTTP 라우터로 404 처리

HTTP 라우터 라이브러리는 API 개발을 위한 강력한 라우팅 기능을 제공합니다. 일반적인 작업 중 하나는 404(찾을 수 없음) 응답을 처리하는 것입니다. 문서에는 사용자 정의 404 핸들러 정의 가능성이 간략하게 언급되어 있지만 구현 세부 사항은 혼란스러울 수 있습니다.

사용자 정의 핸들러 인터페이스 이해

httprouter.Router 구조체에는 다음이 포함됩니다. http.Handler 인터페이스인 NotFound라는 필드입니다. 이 인터페이스는 ResponseWriter 및 요청을 인수로 사용하는 ServeHTTP()라는 단일 메소드를 정의합니다.

사용자 정의 404 핸들러 생성

사용자 정의 404 핸들러를 생성하려면 , ServeHTTP() 메서드 시그니처로 함수를 정의하고 http.HandlerFunc() 도우미 함수를 사용하여 이를 http.Handler 값으로 변환합니다.

구현 예:

<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) // StatusNotFound = 404
    w.Write([]byte("My own Not Found handler."))
    w.Write([]byte(" The page you requested could not be found."))
}</code>

사용자 정의 핸들러 설정

다음으로, HTTP 라우터 객체의 NotFound 필드에 사용자 정의 핸들러를 할당합니다:

<code class="go">router := httprouter.New()
router.NotFound = http.HandlerFunc(MyNotFound)</code>

수동 사용자 정의 핸들러 호출

다른 HTTP 핸들러 내에서 사용자 정의 404 핸들러를 수동으로 호출해야 하는 경우 ResponseWriter 및 요청을 전달하여 수행할 수 있습니다.

<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) {
    exists := ... // Check for resource existence
    if !exists {
        MyNotFound(w, r) // Pass ResponseWriter and Request
        return
    }

    // Resource exists, serve it
    // ...
}</code>

위 내용은 HTTP 라우터에서 404 오류를 사용자 정의 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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