Go1.22新特性:增强http.ServerMux路由能力(2)
导读:Go1.22新特性,/b_{bucket} 不是有效的通配模式。 Go1.22 起,http.ServeMux 可以这么写: mux.HandleFunc("/eddycjy/{id}", func(w http.ResponseWriter, r *http.Request) { id := r.PathValue("id") fmt.Fpri
Go1.22新特性
/b_{bucket}不是有效的通配模式。
Go1.22 起,http.ServeMux 可以这么写:
mux.HandleFunc("/eddycjy/{id}", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintf(w, "id 值为 %s", id)
})
mux.HandleFunc("/eddycjy/{path...}", func(w http.ResponseWriter, r *http.Request) {
path := r.PathValue("path")
fmt.Fprintf(w, "path 值为 %s", path)
})
...
优先级
单一的优先规则:
- 如果两个模式重叠(有一些共同的请求),那么更具体的模式优先。
- 如果 P1 符合 P2 请求的一个(严格)子集,也就是说:如果 P2 符合 P1 的所有请求及更多请求,那么 P1 就比 P2 更具体。
- 如果两者都不更具体,那么模式就会发生冲突。
- 这条规则有一个例外:如果两个模式发生冲突,而其中一个有 HOST ,另一个没有,那么有 HOST 的模式优先。
以下是图示参考:

具体的例子:
example.com/比/更具体,因为第一个仅匹配主机example.com的请求,而第二个匹配任何请求。GET /比/更具体,因为第一个仅匹配 GET 和 HEAD 请求,而第二个匹配任何请求。/b/{bucket}/o/default比/b/{bucket}/o/{noun}更具体,因为第一个仅匹配第四个元素是文字 “default” 的路径,而在第二个中,第四个元素可以是任何内容。
总结
今天我们分享了 Go1.22 对于 net/http 标注库中的 ServerMux 路由相关功能的增强。
Go 还是有在吸收第三方开源库的一些不错的地方的,就是慢了一些。这都 10 多年了…
上面IT袋网为您介绍的Go1.22新特性 以及 增强http.ServerMux路由能力的详细介绍,您了解和帮助到您了吗?
相关阅读
-
广告设计网页有哪些 广告设计与制作的网站推荐
本文为你介绍广告设计网页有哪些和广告设计与制作的网站推荐方面的介绍,一起来看看吧! 如果你是搞设计的,这四个创意设计网站,你应该知道! 最近粉丝让我推荐一些广告设计类网站,
-
Java8 reduce操作详解
今日小编为你讲解Java8方面的讲解,具体介绍如下: 什么是reduce Java8 中有两大最为重要的改变,其一是 Lambda 表达式,另一个就是 Stream API 了。 Stream 是 Java8 中处理集合的关键抽象概念,它将
-
JavaWeb:Request和Response
小编为你介绍JavaWeb的IT知识,一起来看看吧! 1、Request和Response的概述 Request是请求对象,Response是响应对象。 request:获取请求数据 浏览器会发送HTTP请求到后台服务器Tomcat HTTP的请求中会包含很
-
服务器系统有哪些版本 免费虚拟主机服务器推荐
小编为你介绍服务器系统有哪些版本和免费虚拟主机服务器推荐方面的讲解,相关内容具体如下: 今天,我们来分享一下什么是服务器及服务器使用什么操作系统? 首先,我们来明确下两个概


