goweb-搭建服务
web应用简介
web 应用在我们的生活中无处不在。看看我们日常使用的各个应用程序,它们要
么是 web 应用,要么是移动 app 这类 web 应用的变种。无论哪一种编程语言,只要
它能够开发出与人类交互的软件,它就必然会支持 web 应用开发。对一门崭新的编程
语言来说,它的开发者首先要做的一件事,就是构建与互联网( internet)和万维网( world
wide web)交互的库( library)和框架,而那些更为成熟的编程语言还会有各种五花八门
的 web 开发工具。
go 是一门刚开始崭露头角的语言,它是为了让人们能够简单而高效地编写后端系
统而创建的。这门语言拥有众多的先进特性,如函数式编程方面的特性、内置了对并发
编程的支持、现代化的包管理系统、垃圾收集特性、以及一些包罗万象威力强大的标准
库,而且如果需要我们还可以引入第三方开源库。
使用 go 语言进行 web 开发正变得日益流行,很多大公司都在使用,如 google、
facebook、腾讯、百度、阿里巴巴、京东、小米以及 360、美团、滴滴以及新浪等
helloword
package main import ( "fmt" "net/http" ) //创建处理器函数 func handler(w http.responsewriter, r *http.request) { fmt.fprintln(w, "hello world!", r.url.path) } func main() { http.handlefunc("/", handler) http.listenandserve(":8080", nil) }
web 服务器的创建
简介
go 提供了一系列用于创建 web 服务器的标准库,而且通过 go 创建一个服务器的
步骤非常简单,只要通过 net/http 包调用 listenandserve 函数并传入网络地址以及负
责处理请求的处理器( handler )作为参数就可以了。如果网络地址参数为空字符串,那
么服务器默认使用 80 端口进行网络连接;如果处理器参数为 nil,那么服务器将使用默
认的多路复用器 defaultservemux,当然,我们也可以通过调用 newservemux 函数创
建一个多路复用器。多路复用器接收到用户的请求之后根据请求的 url 来判断使用哪
个处理器来处理请求,找到后就会重定向到对应的处理器来处理请求.
使用默认的多路复用器(defaultservemux)
第一种
package main import ( "fmt" "net/http" ) //创建处理器函数 func handler(w http.responsewriter, r *http.request) { fmt.fprintln(w, "正在通过处理器函数处理你的请求") } func main() { http.handlefunc("/", handler) http.listenandserve(":8080", nil) }
使用处理器处理请求
第二种
package main import ( "fmt" "net/http" ) type myhandler struct{} func (h *myhandler) servehttp(w http.responsewriter, r *http.request) { fmt.fprintln(w, "正在通过处理器处理你的请求") } func main() { myhandler := myhandler{} //调用处理器 http.handle("/", &myhandler) http.listenandserve(":8080", nil) }
第三种
package main import ( "fmt" "net/http" "time" ) type myhandler struct{} func (h *myhandler) servehttp(w http.responsewriter, r *http.request) { fmt.fprintln(w, "测试通过 server 结构详细配置服务 器") } func main() { myhandler := myhandler{} //通过 server 结构对服务器进行更详细的配置 server := http.server{ addr: ":8080", handler: &myhandler, readtimeout: 2 * time.second, } server.listenandserve() }
使用自己创建的多路复用器
在创建服务器时,我们还可以通过 newservemux 方法创建一个多路复用器
package main import ( "fmt" "net/http" ) func handler(w http.responsewriter, r *http.request) { fmt.fprintln(w, "通过自己创建的多路复用器来处理请求") } func main() { mux := http.newservemux() mux.handlefunc("/mymux", handler) http.listenandserve(":8080", mux) }
下一篇: 青岛有哪些好玩的地方 青岛旅游推荐