首页 > 后端开发 > Golang > 正文

如何使用 HTTP 路由器自定义处理 404 错误?

Susan Sarandon
发布: 2024-10-26 11:39:30
原创
573 人浏览过

How to Custom Handle 404 Errors with HTTP Router?

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!