创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。 个人博客:太阳上的雨天 地址:http://blog.caixiaoxin.cn 善于分享,希望有助他人. 非常感谢各位大佬的关注和支持
Go语言内置了http包提供了HTTP客户端和服务端的实现
通俗一点讲:Go语言可以通过net/http包搭建自己的服务器处理http的请求
搭建服务器分为两大种方式:第一种是通过默认多路复用器DefaultServeMux,第二种是通过新建多路复用器NewServeMux的方式。
默认多路复用器DefaultServeMux提供了Handle、HandleFunc、Server搭建服务器。不论哪一种都可以实现服务器的搭建。Demo案例
Handle
package main
import (
"net/http"
"fmt"
)
type MyHandler struct {
}
func (m *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "通过自己创建的处理器...", r.URL.Path)
}
func main() {
myHandler := MyHandler{
}
http.Handle("/", &myHandler)
http.ListenAndServe(":8080", nil)
}
HandleFunc
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)
}
Server结构
package main
import (
"net/http"
"fmt"
"time"
)
type MyHandler struct {
}
func (m *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "通过详细Serve配置创建http服务器处理请求", r.URL.Path)
}
func main() {
myHandler := MyHandler{
}
// 创建Serve结构,并详细配置里面的字段
server := http.Server{
Addr: ":8080",
Handler: &myHandler,
ReadTimeout: 2 * time.Second,
}
server.ListenAndServe()
}
NewServeMux
package main
import (
"net/http"
"fmt"
)
//handler
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "通过NewServeMux创建多路复用器创建服务器处理请求!", r.URL.Path)
}
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", handler)
http.ListenAndServe(":8080", mux)
}