【发布时间】:2016-04-12 23:17:08
【问题描述】:
所以我遇到了一个问题,我只能让我的 API 端点工作或我的静态文件工作。我正在使用 gorilla/mux 作为我的路由器,我可能与配置它有关。
我有四个文件我认为在这种情况下很重要:
main.go
func main() {
envVars()
router := NewRouter()
log.Fatal(http.ListenAndServe(":8080", router))
}
router.go
func NewRouter() *mux.Router {
// create new router
router := mux.NewRouter()
for _, route := range routes {
var handler http.Handler
handler = route.HandlerFunc
handler = Logger(handler, route.Name)
router.
Methods(route.Method).
Path(route.Pattern).
Name(route.Name).
Handler(route.HandlerFunc)
}
return router
}
routes.go
var routes = Routes{
Route{
// TODO: Find way to render static file
"Index",
"GET",
"/",
Index,
},
Route{
"PostIndex",
"GET",
"/api/posts",
PostIndex,
},
Route{
"PostCreate",
"POST",
"/api/posts",
PostCreate,
},
}
handlers.go
func Index(w http.ResponseWriter, r *http.Request) {
// TODO: Something to render html file
}
通过研究,我认为我可以使用子路由器,但似乎应该有更好的方法来做到这一点。对于我的所有其他路线,我已经实现了方法,但对于呈现 html 文件,我不确定该方法中会放入什么。
要查看整个项目,请访问:https://github.com/nicholasrucci/blog
更新
我找到了this source。这与我正在经历的相似。
【问题讨论】:
-
如果您不使用模板,只需读取文件并将其写入处理程序中的 responsewriter,如果您使用模板,只需将静态 html 文件放在那里,它将被用作是因为它没有要替换的占位符/代码。