goweb-搭建服务

web应用简介

Web 应用在咱们的生活中无处不在。看看咱们平常使用的各个应用程序,它们要
么是 Web 应用,要么是移动 App 这类 Web 应用的变种。不管哪种编程语言,只要
它可以开发出与人类交互的软件,它就必然会支持 Web 应用开发。对一门崭新的编程
语言来讲,它的开发者首先要作的一件事,就是构建与互联网( Internet)和万维网( World
Wide Web)交互的库( library)和框架,而那些更为成熟的编程语言还会有各类五花八门
的 Web 开发工具。
Go 是一门刚开始崭露头角的语言,它是为了让人们可以简单而高效地编写后端系
统而建立的。这门语言拥有众多的先进特性,如函数式编程方面的特性、内置了对并发
编程的支持、现代化的包管理系统、垃圾收集特性、以及一些一应俱全威力强大的标准
库,并且若是须要咱们还能够引入第三方开源库。web

使用 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)
}
相关文章
相关标签/搜索