请求路由和分发的 Go 框架 gorilla/mux

请求路由和分发的 Go 框架 gorilla/mux

BSD
Google Go
跨平台
2019-06-27
红薯

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"])
}
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

golang--gorilla/mux,强大的URL路由和调度器

标题完全是翻译,gorilla/mux is a powerful URL router and dispatcher,不过个人觉得翻译不到位,望指正。 gorilla/mux包是加一层结构,在这个结构里面配置客户端访问时需要的各种参数,然...

2016/02/22 12:41
68
1
优秀 Go 项目介绍: Gorilla web toolkit

# Gorilla web toolkit 源码托管地址 [Gorilla][0], 官方网站 [gorillatoolkit][1]. Gorilla 在 Github 上是一个开源组, 值得敬佩的是, 这个小组开发出了多个实用并且独立并解耦的 package....

2013/08/02 16:33
1K
2
基于Go语言快速构建RESTful API服务

In this post, we will not only cover how to use Go to create a RESTful JSON API, but we will also talk about good RESTful design. 部分内容删减调整,原文请查看: Making a RESTful...

2017/05/24 11:19
1K
1
第三方库mux的基本实践

golang mux使用

2015/04/16 23:18
27
0
用go语言创建区块链

本文你将用Go语言创建自己的区块链、理解哈希函数是如何保持区块链的完整性、掌握如何创造并添加新的块、实现多个节点通过竞争生成块、通过浏览器来查看整个链、了解所有其他关于区块链的基础...

2018/05/06 10:20
430
0
用golang创建区块链,仅需200行代码。

本文你将用Go(golang)语言创建自己的区块链、理解哈希函数是如何保持区块链的完整性、掌握如何创造并添加新的块、实现多个节点通过竞争生成块、通过浏览器来查看整个链、了解所有其他关于区块...

2018/05/06 10:31
99
0
区块链是什么?彻底理解只需180行go代码!

> 如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: > >- [以太坊DApp实战开发入门](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=oschin...

2018/05/05 22:33
88
0
Docker架构

1 背景 1.1 Docker简介 Docker是Docker公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。目前,Docker可以在容器内部快速自动化部署应用,...

2015/11/28 19:21
137
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部