“空白响应” NotFoundHandler 不工作 Gorilla

我正在尝试通过编写自定义的 not-found 处理程序来调试 404-not-found。这是我的代码。


package main


import (

  "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 呢?

这是我的目录结构 

http://img.mukewang.com/613abd880001718702020239.jpg

吃鸡游戏
浏览 146回答 1
1回答

MYYA

来自的响应uiAppHandler为空,因为该函数不写入响应w。您应该直接使用 mux 注册文件服务器处理程序,而不是尝试创建处理程序:r.PathPrefix("/app").Handler(http.StripPrefix("/app/", http.FileServer(http.Dir(repoFrontend1))))多路复用器将所有带有前缀“/app”的请求传递给为该前缀注册的处理程序。就多路复用器而言,所有具有该前缀的请求都会被找到。http.FileServer 或您为该前缀注册的任何内容负责生成 404 响应。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go