我map在 Go 中有一个路由(例如/static/stylesheets/main.css)作为键和相应的代码作为值(实际上是一个巨大的字符串)。我只是想知道,在 Go 中有没有一种简单的方法可以创建一个 HTTP 服务器,它总是检查传入的请求map并呈现与匹配的键关联的值(如果键存在)?到目前为止,我已经...func main() { var m = generateMap() http.handleFunc("/", renderContent);}func renderContent(w http.ResponseWriter, r *http.Request) { io.WriteString(w, m[path]); }我知道这段代码还远未完成,但希望它能阐明我的目标。我将如何传入path和m传入renderContent以及我如何handleFunc实际处理正则表达式(基本上,任何路径)?
3 回答
杨魅力
TA贡献1811条经验 获得超6个赞
如果你愿意不自己写,那么一些快速且开箱即用的小东西 - 看看 gorilla mux。他们的工具包可以让你选择你想要的组件,所以如果你想要的只是使用正则表达式路由,只需添加他们的多路复用器。
我发现它对于从路由中获取变量特别有用。
r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
...
vars := mux.Vars(request)
category := vars["category"]
Qyouu
TA贡献1786条经验 获得超11个赞
使您的地图成为http.Handler:
type httpFiles struct {
fileMap map[string][]byte
}
func (hf httpFiles) ServeHTTP(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path
w.Write(hf.fileMap[path])
}
- 3 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消