css - 使用 gorilla/mux 使用 Go 服务静态文件

标签 css go

我正在尝试使用 Go 提供静态文件,在遵循一些教程和其他 SO 答案(herehere)之后,我得到了以下代码。我已经研究了许多其他类似的问题,但答案对我不起作用。我实现的路由与大多数其他问题略有不同,所以我想知道是否存在导致问题的细微问题,但不幸的是,我的 Go 技能不够完善,看不出它是什么。我的代码在下面(我已经排除了处理程序的代码,因为它不应该是相关的)。

router.go

package main

import (
    "net/http"

    "github.com/gorilla/mux"
)

func NewRouter() *mux.Router {
    router := mux.NewRouter().StrictSlash(true)

    for _, route := range routes {
        var handler http.Handler

        handler = route.HandlerFunc
        handler = Logger(handler, route.Name)

        router.
            Methods(route.Method).
            Path(route.Path).
            Name(route.Name).
            Handler(handler)
    }

    // This should work?
    fs := http.FileServer(http.Dir("./static"))
    router.PathPrefix("/static/").Handler(http.StripPrefix("/static/", fs))

    return router
}

routes.go

package main

import (
    "net/http"

    "web-api/app/handlers"
)

type Route struct {
    Name        string
    Method      string
    Path        string
    HandlerFunc http.HandlerFunc
}

type Routes []Route

var routes = Routes{
    Route{
        "Index",
        "GET",
        "/",
        handlers.Index,
    },
    Route{
        "Login",
        "GET",
        "/login",
        handlers.GetLogin,
    },
    Route{
        "Login",
        "POST",
        "/login",
        handlers.PostLogin,
    },
}

ma​​in.go

...

func main() {

    router := NewRouter()

    log.Fatal(http.ListenAndServe(":8080", router))
}

我的文件结构设置为:

- app
    - main.go
    - router.go
    - routes.go
    - static/
        - stylesheets/
            - index.css

由于某些原因浏览器无法访问localhost:8080/static/stylesheets/index.css

最佳答案

文件路径是相对于当前工作目录的,而不是引用该路径的源代码文件。

应用程序的文件服务器配置假定 app 目录是当前工作目录。在运行应用程序之前将目录更改为 app 目录。

关于css - 使用 gorilla/mux 使用 Go 服务静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47584069/

相关文章:

css - Webpack source-map 不解析 sass 导入

javascript - 知道单击了哪个按钮的方法-Angular 5

css - 如何创建覆盖整个可见垂直空间(或过渡到实体?)的线性渐变

go - io.LimitReader 读取 http.Body 时的 EOF

转到转换为 *ptrdiff_t 的类型?

reflection - 在golang中使用reflect打印struct指针字段类型

go - 在 stathat 的 treap 包中重叠?

go - 在 Go 中测量 FLOPS

JavaFX 按钮悬停缩放

css - IE8 的多背景 CSS3 问题