当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

gorilla/mux

请求路由和分发的 Go 框架
授权协议 BSD
开发语言 Google Go
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 虞正业
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

gorilla/mux 实现了一个请求路由和分发的 Go 框架。

mux 名字的意思是 "HTTP request multiplexer". 和标准包 http.ServeMux类似,  mux.Router根据已注册路由列表匹配传入请求,并调用与URL或其他条件匹配的路由的处理程序。

主要特性:

  • It implements the http.Handler interface so it is compatible with the standard http.ServeMux.
  • Requests can be matched based on URL host, path, path prefix, schemes, header and query values, HTTP methods or using custom matchers.
  • URL hosts, paths and query values can have variables with an optional regular expression.
  • Registered URLs can be built, or "reversed", which helps maintaining references to resources.
  • Routes can be used as subrouters: nested routes are only tested if the parent route matches. This is useful to define groups of routes that share common conditions like a host, a path prefix or other repeated attributes. As a bonus, this optimizes request matching.

安装

go get -u github.com/gorilla/mux

代码示例

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/", HomeHandler)
    r.HandleFunc("/products", ProductsHandler)
    r.HandleFunc("/articles", ArticlesHandler)
    http.Handle("/", r)
}

这里我们注册了三个 URL 匹配路由进行处理。路径也可以是变量:

r := mux.NewRouter()
r.HandleFunc("/products/{key}", ProductHandler)
r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler)
r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)

这些名称用于创建路由变量的映射,可以通过调用mux.Vars 获取:

func ArticlesCategoryHandler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    w.WriteHeader(http.StatusOK)
    fmt.Fprintf(w, "Category: %v\n", vars["category"])
}
  • 一.概述 gorilla/mux程序包,是一个强大的url路由和调度器,它具有小巧但是稳定高效的特性。 不仅可以支持正则路由,还可以按照Method、header、host等信息匹配,可以从我们设定的路由表达式中提取出参数方便上层应用,而且完全兼容http.ServerMux。 二.对比: gorilla/mux与net/http DefaultServeMux Go 官方标准库 net/http

  • mux https://github.com/gorilla/mux gorilla / mux实现了一个请求路由器和分发器,用于将传入的请求与其各自的处理程序进行匹配。 名称mux代表“ HTTP请求多路复用器”。 与标准的http.ServeMux一样,mux.Router将传入请求与已注册路由列表进行匹配,并为与URL或其他条件匹配的路由调用处理程序。 主要特点是: 它实现了http.Han

  • 发现网上都是类似下面的代码 ``` s :=   "/Users/golang/golang"; http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir(s)))) ``` 经过mux设置就是如下代码 ``` router := mux.NewRouter().StrictSlash(true) s :

  • 目录 gorilla/mux与http.SeverMux gorilla/mux的主要特点 使用实例 源码分析 mux.go route.go 总结 参考资料 gorilla/mux与http.SeverMux golang自带的http.SeverMux路由实现简单,本质是一个map[string]Handler,是请求路径与该路径对应的处理函数的映射关系。实现简单功能也比较单一: 不支持正则路

  • gorilla/mux类库解析 shanks · 2016-06-11 16:41:09 · 6716 次点击 · 预计阅读时间 7 分钟 · 2分钟之前 开始浏览     这是一个创建于  2016-06-11 16:41:09 的文章,其中的信息可能已经有所发展或是发生改变。 golang自带的http.SeverMux路由实现简单,本质是一个map[string]Handler,是请求路径与

  • 编写go程序时报错:no required module provides package github.com/gorilla/mux # 命令行执行 go env -w GO111MODULE=auto GO111MODULE=off,无模块支持,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。 GO111MODULE=

 相关资料
  • 问题内容: https://cloud.google.com/appengine/docs/go/users/ 我在这里看到他们没有指定使用任何路由器…:https : //cloud.google.com/appengine/docs/go/config/appconfig 在与Golang一起使用的Google Cloud中,它表示要在中指定每个处理程序。这是否意味着我们不应该使用第三方路由器

  • Herosphp的url结构采用的是pathinfo的形式,没有严格的路由,只要你的请求方式遵循我们定义的格式组装URL,就可以自动路由,不像某些其他框架一样需要手动添加路由。URL的结构如下: 标准格式:/ucenter/user/login/userid-123-username-xiaoming.shtml (伪静态模式) 当然你也可以这样写: 常规格式:/ucenter/user/logi

  • 问题内容: 如何将中间件应用于Go Gorilla Toolkit多路复用器子路由器? 我有以下代码: 我想应用一个检查安全性令牌的中间件处理程序,但仅在以开头的那些路径上。 问题答案: 以下似乎有效: 哪里 和

  • 问题内容: 我正在使用大猩猩多路复用器来管理路由。我所缺少的是在每个请求之间集成中间件。 例如 每个传入的请求都应通过中间件。如何在这里集成中间件? 更新资料 我将其与大猩猩/会议结合使用,他们说: 重要说明:如果您不使用大猩猩/多核,则需要使用context.ClearHandler包装处理程序,否则会泄漏内存!一种简单的方法是在调用http.ListenAndServe时包装顶级mux: 如何

  • 问题内容: 我希望一些查询参数是可选的。至于现在,我有 但是在这种情况下,请求中必须包含“用户名”和“电子邮件”。我想要一个更灵活的选择:使用2个或仅选择其中之一(但不设置零参数)。 谢谢! 问题答案: 因此,我找到了将逻辑重写为的解决方案: 在其中我们可以有类似以下内容:

  • 在常见的Web框架中,router是必备的组件。Go语言圈子里router也时常被称为http的multiplexer。在上一节中我们通过对Burrow代码的简单学习,已经知道如何用http标准库中内置的mux来完成简单的路由功能了。如果开发Web系统对路径中带参数没什么兴趣的话,用http标准库中的mux就可以。 RESTful是几年前刮起的API设计风潮,在RESTful中除了GET和POST