我在 Go 中有一个 map
,其中路由(例如 /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
实际处理正则表达式(本质上是任何路径)?
最佳答案
如果您愿意不自己编写,一些快速且开箱即用的小东西 - 看看 gorilla mux。他们的工具包可以让你选择你想要的组件,所以如果你想要的只是使用正则表达式进行路由,只需添加他们的多路复用器即可。
我发现它对于从路由获取变量特别有帮助。
r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
...
vars := mux.Vars(request)
category := vars["category"]
关于regex - 转到 HTTP 服务器 : Handling Routes with Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31945875/