2、五分钟学go-web|创建web服务器

1、简介

通过 Go 创建一个服务器的步骤非常简单, 只要通过 net/http 包调用 ListenAndServe 函数并传入网络地址以及负责处理请求的处理器( handler )作为参数就可以了。

如果网络地址参数为空,服务器默认使用 80 端口进行网络连接;
如果处理器参数为 nil,那么服务器将使用默认的多路复用器 DefaultServeMux;当然,我们也可以通过调用 NewServeMux 函数创建一个多路复用器。
多路复用器接收到用户的请求之后根据请求的 URL 来判断使用哪个处理器来处理请求,找到后就会重定向到对应的处理器来处理请求。

2、默认的多路复用器(DefaultServeMux)

2.1、使用处理器函数处理请求

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)
}

说明:
1. HandleFunc 方法的说明
HandleFunc注册一个处理器函数handler和对应的模式pattern(注册到DefaultServeMux)。
2. 处理器函数的实现原理
Go 语言拥有一种 HandlerFunc 函数类型,它可以将一个带有正确签
名的函数 f 转换成一个带有方法 f 的 Handler。

2.2、使用处理器处理请求

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)
}

说明:
1. Handle 方法的说明
Handle注册HTTP处理器和对应的模式pattern(注册到DefaultServeMux)。如果该模式已经注册有一个处理器,Handle会panic。
2. 处理器Handler 方法的说明
只要某个结构体实现了 Handler 接口中的 ServeHTTP 方法
那么它就是一个处理器。

2、自己创建多路复用器

在创建服务器时,我们还可以通过 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)
}

你可能感兴趣的:(2、五分钟学go-web|创建web服务器)