自訂「找不到」(404) 使用httprouter 處理
使用httprouter 庫開發API 時,處理404(找不到)回應是一項至關重要的任務。雖然文件提到了手動處理 404 的可能性,但實現自訂處理程序可能具有挑戰性。
理解 NotFound 欄位
httprouter.Router 結構體包含一個名為 的欄位NotFound,其類型為http.Handler。這表示 NotFound 的值必須實作 http.Handler 介面中存在的 ServeHTTP 方法。
建立自訂處理程序,您可以建立一個具有與ServeHTTP 方法相符的簽章的函數:
將函數轉換為處理程序<code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) { // ... Custom handling logic }</code>
將函數轉換為處理程序
將函數轉換為值實現了http.Handler 接口,您可以使用http.HandlerFunc() 輔助函數:
<code class="go">router := httprouter.New() router.NotFound = http.HandlerFunc(MyNotFound)</code>
手動呼叫自訂處理程序
如果您願意從其他處理程序中手動呼叫您的自訂處理程序,為處理程序提供ResponseWriter 和*Request:
<code class="go">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 }</code>
結論
透過執行下列步驟,您可以在基於httprouter 的API 中有效地自訂「找不到」處理流程,確保用戶在嘗試存取不存在的資源時收到適當的回應。
以上是如何使用 httprouter 在 Go 中自訂 404(找不到)回應?的詳細內容。更多資訊請關注PHP中文網其他相關文章!