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