Build a Web
In the browser input http://localhost:8080
import ( "net/http" "fmt" "log")func sayhelloGolang(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析参数,默认是不会解析的 fmt.Println("path", r.URL.Path) w.Write([]byte("Hello Golang"))}func main() { http.HandleFunc("/", sayhelloGolang) //设置访问的路由 err := http.ListenAndServe(":8080", nil) //设置监听的端口 if err != nil { log.Fatal("ListenAndServe: ", err) }}
Inherit Servehttp
type BaseHander struct { }func (hander *BaseHander)ServeHTTP(resp http.ResponseWriter,req *http.Request){ fmt.Println("url path=>",req.URL.Path) fmt.Println("url param a =>",req.URL.Query().Get("a")) resp.Write([]byte("hello world"))}func main() { http.ListenAndServe(":8080",&BaseHander{});}
Net/http Routing
Package Muximport ("Net/http") type Muxhandler struct {handlers map[string]http. Handler handlefuncs Map[string]func (resp http. Responsewriter, req *http. Request)}func Newmuxhandler () *muxhandler {return &muxhandler{make (map[string]http. Handler), Make (Map[string]func (resp http. Responsewriter, req *http. Request),}}func (handler *muxhandler) servehttp (resp http. Responsewriter, req *http. Request) {urlpath: = req. Url. Path if HL, ok: = Handler.handlers[urlpath]; OK {hl. Servehttp (RESP, req) return} if fn, OK: = Handler.handlefuncs[urlpath]; OK {fn (resp, req) return} http. NotFound (RESP, req)}func (hander *muxhandler) Handle (pattern string, HL http. Handler) {Hander.handlers[pattern] = Hl}func (Handler *muxhandler) Handlefunc (Pattern string, fn func (resp http. Responsewriter, req *http. Request) {Handler.handlefuncs[pattern] = fn}
var (port string) Func main () {flag. Stringvar (&port, "Port", ": 8080", "Port to listen") flag. Parse () Router: =mux. Newmuxhandler () router. Handle ("/hello/golang/", &basehander{}) router. Handlefunc ("/hello/world", func (resp http. Responsewriter, req *http. Request) {resp. Write ([]byte ("Hello World")}) http. Listenandserve (port, Router)}