首頁  >  文章  >  後端開發  >  如何使用 httprouter 中的自訂處理程序處理 404 錯誤?

如何使用 httprouter 中的自訂處理程序處理 404 錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-28 03:47:30716瀏覽

How to Handle 404 Errors with Custom Handlers in httprouter?

使用httprouter 的自訂處理程序處理404 錯誤

在使用httprouter 建置的HTTP API 中,處理404(未找到錯誤)需要自訂處理程序。文件提到了這種可能性,但沒有提供有關如何建立的明確說明。

設定自訂處理程序

要手動處理404 錯誤,請依照這些步驟:

  1. 使用以下簽名一個函數:

    <code class="go">func(http.ResponseWriter, *http.Request)</code>
  2. 使用http. HandlerFunc() 輔助函數。

    <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."))
    
        // or with more detailed message
        w.Write([]byte(" The page you requested could not be found."))
    }</code>
  3. 將MyNotFound 處理程序指派給httprouter 的NotFound 欄位:

    <code class="go">var router *httprouter.Router = ... // Your router value
    router.NotFound = http.HandlerFunc(MyNotFound)</code>

在處理程序中,如果需要,您可以透過傳遞ResponseWriter 和*Request 來手動呼叫MyNotFound 處理程序:
<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 的API 中的404 錯誤,並根據需要自訂行為。

以上是如何使用 httprouter 中的自訂處理程序處理 404 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn