下面是我用Go语言和大猩猩mux包编写的一个小型演示and服务器的代码:
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("/",.)但它会太贪婪了。
发布于 2017-04-25 14:26:19
路由器导出一个可以设置为自定义处理程序的NotFoundHandler
字段。
r := mux.NewRouter()
r.NotFoundHandler = MyCustom404Handler
发布于 2019-07-08 14:54:04
有时,您需要花费大量的时间来构建一个中间件堆栈,它可以完成许多事情,比如日志记录、发送度量等等。默认404处理程序只跳过所有的中间件。
我能够通过重新设置默认404处理程序来解决这个问题,如下所示:
router := mux.NewRouter()
router.Use(someMiddleware())
// Re-define the default NotFound handler
router.NotFoundHandler = router.NewRoute().HandlerFunc(http.NotFound).GetHandler()
现在,404默认处理程序也在遍历所有的中间件。
发布于 2017-04-25 14:25:49
将NotFoundHandler
设置为返回自定义404页的处理程序方法。
https://stackoverflow.com/questions/43613311
复制相似问题