Go语言搭建服务器的方式

作者: 太阳上的雨天 分类: Go 发布时间: 2022-02-16 21:46

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注