首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在大猩猩mux路由器上设置404 NotFound处理程序

在大猩猩mux路由器上设置404 NotFound处理程序
EN

Stack Overflow用户
提问于 2017-04-25 14:20:40
回答 4查看 9.6K关注 0票数 7

下面是我用Go语言和大猩猩mux包编写的一个小型演示and服务器的代码:

代码语言:javascript
运行
复制
package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    fmt.Fprintf(w, "Hi there, I love %s!", vars["username"])
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
        errorHandler(w, r, http.StatusNotFound)
        return
    }
    vars := mux.Vars(r)
    fmt.Fprintf(w, "Hi there, I love %s!", vars["username"])
}

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/help/{username}/", handler)
    http.Handle("/", r)
    http.ListenAndServe(":8080", nil)
}

但是我找不到如何实现自定义404页面的方法。

但我不能做r.HandleFunc("/",.)但它会太贪婪了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-25 14:26:19

路由器导出一个可以设置为自定义处理程序的NotFoundHandler字段。

代码语言:javascript
运行
复制
r := mux.NewRouter()
r.NotFoundHandler = MyCustom404Handler
票数 14
EN

Stack Overflow用户

发布于 2019-07-08 14:54:04

有时,您需要花费大量的时间来构建一个中间件堆栈,它可以完成许多事情,比如日志记录、发送度量等等。默认404处理程序只跳过所有的中间件。

我能够通过重新设置默认404处理程序来解决这个问题,如下所示:

代码语言:javascript
运行
复制
router := mux.NewRouter()
router.Use(someMiddleware())
// Re-define the default NotFound handler
router.NotFoundHandler = router.NewRoute().HandlerFunc(http.NotFound).GetHandler()

现在,404默认处理程序也在遍历所有的中间件。

票数 10
EN

Stack Overflow用户

发布于 2017-04-25 14:25:49

NotFoundHandler设置为返回自定义404页的处理程序方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43613311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档