go web 学习,感觉很神奇,非常简单的实现了一个服务端。
一、实现流程
(1)先上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package main import ( "fmt" "log" "net/http" "strings" ) func sayhelloName(w http.ResponseWriter, r *http.Request) { r.ParseForm() // 解析参数,默认是不会解析的 fmt.Println(r.Form) // 这些信息是输出到服务器端的打印信息 fmt.Println("path", r.URL.Path) fmt.Println("scheme", r.URL.Scheme) fmt.Println(r.Form["url_long"]) for k, v := range r.Form { fmt.Println("key:", k) fmt.Println("val:", strings.Join(v, "")) } fmt.Fprintf(w, "Hello Godlikexie!") // 这个写入到w的是输出到客户端的 } func whoami(w http.ResponseWriter, r *http.Request) { // var whoami type // whoami = r.Form["whoami"] // fmt.Fprintf(w, "I am "+whoami+"!") // 这个写入到w的是输出到客户端的 fmt.Fprintf(w, "I am godlikexie !") // 这个写入到w的是输出到客户端的 } func main() { http.HandleFunc("/helloworld", sayhelloName) // 设置访问的路由 http.HandleFunc("/whoami", whoami) // 设置访问的路由 err := http.ListenAndServe(":9090", nil) // 设置监听的端口 if err != nil { log.Fatal("ListenAndServe: ", err) } } |
访问:http://localhost:9090/,结果报出404 page not found
没有路由为空页面,当然返回404了…
访问:http://localhost:9090/helloworld
Hello Godlikexie!
访问:http://localhost:9090/whoami
I am godlikexie !
(2)加强,进行参数获取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
package main import ( "fmt" "log" "net/http" "strings" ) func sayhelloName(w http.ResponseWriter, r *http.Request) { r.ParseForm() // 解析参数,默认是不会解析的 fmt.Println(r.Form) // 这些信息是输出到服务器端的打印信息 fmt.Println("path", r.URL.Path) fmt.Println("scheme", r.URL.Scheme) fmt.Println(r.Form["url_long"]) for k, v := range r.Form { fmt.Println("key:", k) fmt.Println("val:", strings.Join(v, "")) } fmt.Fprintf(w, "Hello Godlikexie!") // 这个写入到w的是输出到客户端的 } func whoami(rw http.ResponseWriter, req *http.Request) { req.ParseForm() if len(req.Form["name"]) > 0 { fmt.Fprintf(rw, "hello "+req.Form["name"][0]) } else { fmt.Fprintf(rw, "no param named name !") // 这个写入到w的是输出到客户端的 } } func main() { http.HandleFunc("/helloworld", sayhelloName) // 设置访问的路由 http.HandleFunc("/whoami", whoami) // 设置访问的路由 err := http.ListenAndServe(":9090", nil) // 设置监听的端口 if err != nil { log.Fatal("ListenAndServe: ", err) } } |
这样就可以获取参数值并且输出了。
访问:http://localhost:9090/whoami
no param named name !
访问:http://localhost:9090/whoami?name=xie
hello xie
二、总结
这是简单的http server示例,之后就可以添加更多功能了。