Go web基本应用

1、net.http

第一个版本

package main

import (
	"io"
	"log"
	"net/http"
)

func main() {
        // 设置路由
	http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
		io.WriteString(writer, "hello world! this is http test demo01")
	})

	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		log.Fatal(err)
	}
}

第二版本

// 第二个版本
package main
import (
	"io"
	"log"
	"net/http"
)

//type myHandler struct {
//
//}

//func (this *myHandler)ServeHTTP(writer http.ResponseWriter, request *http.Request) {
//	io.WriteString(writer, "hello world! this is http test demo02\n" + request.URL.String())
//}

func main() {
	mux := http.NewServeMux()
	// 设置
	mux.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
		io.WriteString(writer, "hello world! this is http test demo02\n" + request.URL.String())
	})
	//mux.Handle("/", &myHandler{})

	err := http.ListenAndServe(":8080", mux)
	if err != nil {
		log.Fatal(err)
	}
}

第三版本  通过map调用对应的路由函数

// 第三个版本
package main
import (
	"io"
	"log"
	"net/http"
	"time"
)
type myHandler struct {
}

func (*myHandler)ServeHTTP(writer http.ResponseWriter, request *http.Request) {
	if h, ok := mf[request.URL.String()]; ok {
		h(writer, request)
		return
	}
	io.WriteString(writer, "URL:" + request.URL.String())
}

func byebye(writer http.ResponseWriter, request *http.Request) {
	io.WriteString(writer, "bye bye! this is http test demo03\n" + request.URL.String())
}
func love(writer http.ResponseWriter, request *http.Request) {
	io.WriteString(writer, "love! this is http test demo03\n" + request.URL.String())
}

var mf map[string]func(http.ResponseWriter, *http.Request)
func main() {
	server := http.Server{
		Addr:    ":8080",
		Handler: &myHandler{},
		ReadHeaderTimeout:5 * time.Second,  // 5秒
	}

	mf = make(map[string]func(http.ResponseWriter, *http.Request))
	mf["/bye"] = byebye
	mf["/love"] = love

	err := server.ListenAndServe()
	if err != nil {
		log.Fatal(err)
	}
}

发布了343 篇原创文章 · 获赞 57 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/jadeshu/article/details/103750159