自訂「Not Found」(404) 使用httprouter處理
使用httprouter庫開發API時,處理404(Not Found)回應是一項至關重要的任務。雖然文件提到了手動處理 404 的可能性,但實現自訂處理程序可能具有挑戰性。
瞭解 NotFound 欄位
httprouter.Router 架構包含一個名為NotFound,其型別為http.Handler。這表示 NotFound 的值必須實作 http.Handler 介面中存在的 ServeHTTP 方法。
建立自訂「Not Found」處理程序
定義您自己的處理程序自訂處理程序,您可以建立一個具有與ServeHTTP 方法相符的簽章的函數:
func MyNotFound(w http.ResponseWriter, r *http.Request) {
// ... Custom handling logic
}
將函數轉換為處理程序
要將函數轉換為實作http.Handler 介面的值,您可以使用http.HandlerFunc() 幫助器函式:
router := httprouter.New()
router.NotFound = http.HandlerFunc(MyNotFound)
手動呼叫自訂處理程序
如果您希望從其他處理程序中手動呼叫自訂處理程序,請提供處理程序帶有ResponseWriter 和*Request:
func ResourceHandler(w http.ResponseWriter, r *http.Request) {
// ... Code to determine resource validity
if !resourceExists {
MyNotFound(w, r) // Manual invocation of custom handler
return
}
// ... Resource exists, serve it normally
}
結論
透過執行下列步驟,您可以在基於httprouter 的API 中有效地自訂「未找到」處理流程,確保使用者在下列情況下收到適當的回應:嘗試存取不存在的資源。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3