regex - 转到 HTTP 服务器 : Handling Routes with Map

标签 regex http go

我在 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]); 
}

我知道这段代码还远远没有完成,但希望它能澄清我的目标。我如何将 pathm 传递到 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/

相关文章:

regex - 如何让 grep 输出所有匹配的行?

php - 查找注入(inject)空格的 PHP 文件

go - Go中如何获取Riak KV集群和节点状态数据

Golang 打印 "nil"

python - 正确的 python 正则表达式返回 NoneType

用于匹配状态的正则表达式模式

c - 是否可以使用 libcurl 同时下载和发布 multipart/form-data 同一文件?

http - OverPass API - 坐标周围的速度限制

django http 直接响应html

postgresql - 如何使用 gorm 在 postgresQL 数据库中存储点