首頁 >後端開發 >Golang >如何使用 HTTP 路由器自訂處理 404 錯誤?

如何使用 HTTP 路由器自訂處理 404 錯誤?

Susan Sarandon
Susan Sarandon原創
2024-10-26 11:39:30628瀏覽

How to Custom Handle 404 Errors with HTTP Router?

使用 HTTP Router 處理 404

HTTP Router 函式庫為 API 開發提供了強大的路由功能。一項常見任務是處理 404(未找到)回應。雖然文件簡要提到了定義自訂 404 處理程序的可能性,但實作細節可能會令人困惑。

了解自訂處理程序介面

httprouter.Router 結構包含名為 NotFound 的字段,它是 http.Handler 介面。此介面定義了一個方法 ServeHTTP(),它接受 ResponseWriter 和 Request 作為參數。

建立自訂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 和Request 來實現:

<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