Go语言中处理 HTTP 服务器
看 Go 的源码,了解 http.HandleFunc():
可以看出来,注册的函数被 DefaultServerMux 来使用了。注册的时候,需要 pattern,就是 URL 模式,以及处理该 URL 模式的函数。 DefaultServerMux 是 http.ServeMux 类型的一个默认实例,ServeMux 就是路由。其主要结构是一个映射 map,用来存储 URL 模式和相关处理函数的关系。参看源码可以看出来:
可以调用多次 http.HandleFunc() 来注册多个处理器。 URL 模式是固定的、由根开始的路径。处理器的 URL 模式匹配原则是 左侧长度优先匹配。 例如有模式 /path/article/ 和 /path/ ,如果请求的 URL 是 /path/other/ 会由 /path/ 注册的处理器来处理,而 URL 为 /path/article/42/ 会由 /path/article/ 来处理。 以斜杠结尾的模式代表一个由根开始的子树,,就是以当前为前缀的都会匹配。因此 / 会匹配所有的未被其他注册的模式匹配的路径。 4 处理器 处理器可以由函数或实现 Handler 接口的对象来充当。Handler 接口就是要求对象实现和处理器函数一致的方法。看 http.Handler 接口的实现源码:
我们使用函数 http.HandleFunc 注册处理函数,而使用 http.Handle 函数来注册满足 Handler接口的处理对象。效果是一致的。 服务器篇完,后续还有 请求对象,响应对象 。 【编辑推荐】
点赞 0 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |