简单的路由器/多路复用器,静态文件请求的请求路径为空

时间:2020-06-02 04:30:00

标签: go

我仅在/端点上运行服务器,并且它的处理程序解析请求URL路径以确定该做什么。它处理原始/路径以及其他任何路径的默认情况。除此之外,我想提供一个静态CSS文件,但路径永远不匹配“ css / style.css”。

我的模板还有其他href链接,例如/help/user,它们都可以正常工作。如果添加打印语句以打印path,则会看到正确的输出。但是在我要链接到CSS的index.html模板中,该路径始终是/路径。

我可以在浏览器中看到网络活动,但不确定如何解决。我看到来自localhost:8080/css/style.css的请求,但是从响应代码中,该请求由我的默认情况处理。我从``localhost:8080 /''看到另一个请求,该请求返回一个样式表,发起者是style.css,这很奇怪。我不了解这项活动。

http.HandleFunc("/", svr.Handler)
func (s *Server) Handler(w http.ResponseWriter, r *http.Request) {
    path := strings.TrimPrefix(r.URL.Path, "/")

    switch path {
    case "", "/":
        //handle homepage, process data
        err := s.template.ExecuteTemplate(w, "index.html", data)
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
    case "css/style.css":
        //serve CSS file
        http.ServeFile(w, r, "../templates/css/style.css")
    default:
        //handle other, process data
        err := s.template.ExecuteTemplate(w, "index.html", data)
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
    }
}

在我的index.html模板中:

<link rel="stylesheet" type="text/css" href="css/style.css"> 

0 个答案:

没有答案