使用 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中文網其他相關文章!