Go语言搭建服务器的方式

505 次浏览次阅读
没有评论

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)
}
正文完
 0
评论(没有评论)