为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
RISEBY 2021-11-01 10:54:39
我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"]


查看完整回答
反对 回复 2021-11-01
?
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])

}


查看完整回答
反对 回复 2021-11-01
  • 3 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信