加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Go说话中处理赏罚 HTTP 处事器

发布时间:2018-12-12 08:06:34 所属栏目:业界 来源:韩忠康
导读:1 概述 包 net/http 提供了HTTP处事器端和客户端的实现。本文声名关于处事器端的部门。 快速开始: packagemain import( log net/http ) funcmain(){ //配置路由 http.HandleFunc(/,IndexAction) //开启监听 log.Fatal(http.ListenAndServe(:8888,nil)) }

看 Go 的源码,相识 http.HandleFunc():

  1. func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) { 
  2.   DefaultServeMux.HandleFunc(pattern, handler) 

可以看出来,注册的函数被 DefaultServerMux 来行使了。注册的时辰,必要 pattern,就是 URL 模式,以及处理赏罚该 URL 模式的函数。

DefaultServerMux 是 http.ServeMux 范例的一个默认实例,ServeMux 就是路由。其首要布局是一个映射 map,用来存储 URL 模式和相干处理赏罚函数的相关。参看源码可以看出来:

  1. type ServeMux struct { 
  2.   mu    sync.RWMutex 
  3.   m     map[string]muxEntry // 映射表 
  4.   hosts bool // whether any patterns contain hostnames 
  5. type muxEntry struct { 
  6.   h       Handler 
  7.   pattern string 

可以挪用多次 http.HandleFunc() 来注册多个处理赏罚器。

URL 模式是牢靠的、由根开始的路径。处理赏罚器的 URL 模式匹配原则是 左侧长度优先匹配。

譬喻有模式 /path/article/ 和 /path/ ,假如哀求的 URL 是 /path/other/ 会由 /path/ 注册的处理赏罚器来处理赏罚,而 URL 为 /path/article/42/ 会由 /path/article/ 来处理赏罚。

以斜杠末了的模式代表一个由根开始的子树,,就是以当前为前缀的城市匹配。因此 / 会匹配全部的未被其他注册的模式匹配的路径。

4 处理赏罚器

处理赏罚器可以由函数或实现 Handler 接口的工具来充当。Handler 接口就是要求工具实现和处理赏罚器函数同等的要领。看 http.Handler 接口的实现源码:

  1. type Handler interface { ServeHTTP(ResponseWriter, *Request)} 

我们行使函数 http.HandleFunc 注册处理赏罚函数,而行使 http.Handle 函数来注册满意 Handler接口的处理赏罚工具。结果是同等的。

处事器篇完,后续尚有 哀求工具,相应工具 。

【编辑保举】

  1. 怎样通过Ansible来打点上千台处事器??
  2. 用 Python 快速实现 HTTP 和 FTP 处事器
  3. 中标中国人民银行,曙光八路处事器再获承认
  4. CentOS体系下PXE处事器的搭建与陈设
  5. 详解X86处事器假造化的资源分别和机能优化
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读