Go语言http包简易入门
2019-06-02 20:23
2376 查看
说道go语言web编程,必不可少的会使用到net/http包。go语言将web开发需要使用到的很多内容都放在了标准库中——net/http。
如何写一个简单的web程序很容易。如下:
package main import ( "fmt" "net/http" ) func hello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "hello") } func main() { server := &http.Server{ Addr: "0.0.0.0:8080", } http.HandleFunc("/hello", hello) server.ListenAndServe() }
其中使用了http包。使用http.HandleFunc就是使用了一个处理器函数。
处理器函数是一个签名和ServeHTTP方法相同的函数,Go语言中,有一种HandlerFunc函数类型,可以加将这个函数转化为带有方法的处理器(Handler)?
ServerMux是一个路由管理器,也可以说是一个多路复用器,使用方式如下:
package main import ( "fmt" "net/http" ) func main() { servermux := http.NewServeMux() servermux.HandleFunc("/hello", hello) server := &http.Server{ Addr: ":8080", Handler: servermux, } server.ListenAndServe() } func hello(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "hello world") }
其实是在使用http.HandleFunc的时候,调用了
func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) { DefaultServeMux.HandleFunc(pattern, handler) }
这样的话,其实是使用了一个变量DefaultServeMux,再看看这个变量的内容:
var DefaultServeMux = &defaultServeMux var defaultServeMux ServeMux
这个变量其实就是ServeMux的实例。也就是ServeMux,所以在使用http的handerfunc的时候,是使用了这个多路复用器的。这个处理器也是默认的处理器。如果没有声明或者直接使用其他的处理器的时候,调用处理器函数和处理器都是使用了这个。
接下来看HandleFunc这个函数,以上使用的http包的函数HandleFunc最终调用的是ServeMux的HandleFunc。所以在使用的时候Handle和HandleFunc完全一致。
type HandlerFunc func(ResponseWriter, *Request)
HandleFunc最终会将函数转成HandleFunc,等同于Handler,Handler是一个接口,如下:
type Handler interface { ServeHTTP(ResponseWriter, *Request) }
所以其实这两种类型是等价的。
相关文章推荐
- BSD Socket 简易入门手册 (http://www.fanqiang.com)
- web开发快餐式入门指南 1.1 http
- 08_android入门_android-async-http开源项目介绍及用法
- HTTP协议入门要点
- httpClient 入门实例
- Vue.js框架简易入门
- MATLAB 入门教程六:编程风格与m文件 取自http://www.matlabsky.com/forum-viewthread-tid-17682-fromuid-88314.html
- Spring框架自学之路——简易入门
- JDBC简易入门-各层的写法-02
- Sagit.Framework For IOS 开发框架入门教程6:网络请求STHttp
- Android学习笔记---HttpClient入门,使用方法,及简介
- 制作 JS 广告的简易入门(二)利用 CSS3 技术制作广告
- cas入门之:cas 4 如何以http形式发布
- 微信公众账号开发教程(三) 实例入门:机器人(附源码) ——转自http://www.cnblogs.com/yank/p/3409308.html
- JAX-RS入门 八: HTTP响应
- AJAX入门---五步使用XMLHttpRequest对象
- ajax处理过程,ajax入门,XMLHttpRequest对象
- 一个支持 cgi 的简易 http 服务器
- HTTPClient 入门
- 《Java从入门到放弃》JSP入门篇:XMLHttpRequest的基本用法