3 回答
TA贡献1811条经验 获得超6个赞
使用Gorilla mux包:
r := mux.NewRouter()
//put your regular handlers here
//then comes root handler
r.HandleFunc("/", homePageHandler)
//if a path not found until now, e.g. "/image/tiny.png"
//this will look at "./public/image/tiny.png" at filesystem
r.PathPrefix("/").Handler(http.FileServer(http.Dir("./public/")))
http.Handle("/", r)
http.ListenAndServe(":8080", nil)
TA贡献1797条经验 获得超6个赞
我想到的一件事可能对您有所帮助,您可以创建自己的ServeMux。我在您的示例中添加了内容,使chttp是一个ServeMux,您可以为其提供静态文件。然后,HomeHandler会检查它是否应该提供文件。我只是检查一个“。” 但您可以做很多事情。只是一个想法,可能不是您想要的。
package main
import (
"fmt"
"net/http"
"strings"
)
var chttp = http.NewServeMux()
func main() {
chttp.Handle("/", http.FileServer(http.Dir("./")))
http.HandleFunc("/", HomeHandler) // homepage
http.ListenAndServe(":8080", nil)
}
func HomeHandler(w http.ResponseWriter, r *http.Request) {
if (strings.Contains(r.URL.Path, ".")) {
chttp.ServeHTTP(w, r)
} else {
fmt.Fprintf(w, "HomeHandler")
}
}
- 3 回答
- 0 关注
- 222 浏览
添加回答
举报