为了账号安全,请及时绑定邮箱和手机立即绑定

“空白响应” NotFoundHandler 不工作 Gorilla

“空白响应” NotFoundHandler 不工作 Gorilla

Go
吃鸡游戏 2021-09-10 10:05:35
我正在尝试通过编写自定义的 not-found 处理程序来调试 404-not-found。这是我的代码。package mainimport (  "database/sql"  "encoding/json"  "fmt"  "log"  "net/http"  "github.com/coopernurse/gorp"  _ "github.com/go-sql-driver/mysql"  "github.com/gorilla/mux")func main() {  // Create a MUX  r := mux.NewRouter()  http.Handle("/", r)  r.NotFoundHandler = http.HandlerFunc(NotFound)  // Static  r.PathPrefix("/app").HandlerFunc(uiAppHandler)  err := http.ListenAndServe(":8080", nil)  if err != nil {    log.Fatal(err)  }}func NotFound(w http.ResponseWriter, r *http.Request) {  fmt.Fprint(w, "custom 404")}func uiAppHandler(w http.ResponseWriter, r *http.Request) {  repoFrontend1 := "/UI/KD/WebContent"  http.StripPrefix("/app/", http.FileServer(http.Dir(repoFrontend1)))}对于现有和不存在的文件,我都收到空白响应。我猜 NotFound 没有被触发,因为我的“/”处理程序。那么我如何处理 http.Dir 的 notFound 呢?这是我的目录结构 
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

来自的响应uiAppHandler为空,因为该函数不写入响应w。您应该直接使用 mux 注册文件服务器处理程序,而不是尝试创建处理程序:

r.PathPrefix("/app").Handler(http.StripPrefix("/app/", http.FileServer(http.Dir(repoFrontend1))))

多路复用器将所有带有前缀“/app”的请求传递给为该前缀注册的处理程序。就多路复用器而言,所有具有该前缀的请求都会被找到。http.FileServer 或您为该前缀注册的任何内容负责生成 404 响应。


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信