Go HTTP Server:使用地图处理路由

我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实际处理正则表达式(基本上,任何路径)?


RISEBY
浏览 176回答 3
3回答

杨魅力

如果你愿意不自己写,那么一些快速且开箱即用的小东西 - 看看 gorilla mux。他们的工具包可以让你选择你想要的组件,所以如果你想要的只是使用正则表达式路由,只需添加他们的多路复用器。我发现它对于从路由中获取变量特别有用。r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)...vars := mux.Vars(request)category := vars["category"]

Qyouu

使您的地图成为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])}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go