在Golang中写一个http web服务器大致是有两种方法:
1 使用net包的net.Listen来对端口进行监听
2 使用net/http包
http客户端
这里是讨论如何使用net/http包创建一个web服务器
net/http请求提供了HTTP客户端和服务端的具体实现
import ( "fmt" "net/http" "io/ioutil" ) func main() { response,_ := http.Get("http://www.baidu.com") defer response.Body.Close() body,_ := ioutil.ReadAll(response.Body) fmt.Println(string(body)) }
http.Client和http.NewRequest来模拟请求
package main import ( "net/http" "io/ioutil" "fmt" ) func main() { client := &http.Client{} reqest, _ := http.NewRequest("GET", "http://www.baidu.com", nil) reqest.Header.Set("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") reqest.Header.Set("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3") reqest.Header.Set("Accept-Encoding","gzip,deflate,sdch") reqest.Header.Set("Accept-Language","zh-CN,zh;q=0.8") reqest.Header.Set("Cache-Control","max-age=0") reqest.Header.Set("Connection","keep-alive") response,_ := client.Do(reqest) if response.StatusCode == 200 { body, _ := ioutil.ReadAll(response.Body) bodystr := string(body); fmt.Println(bodystr) } }
如何创建web服务端?
package main import ( "net/http" ) func SayHello(w http.ResponseWriter, req *http.Request) { w.Write([]byte("Hello")) } func main() { http.HandleFunc("/hello", SayHello) http.ListenAndServe(":8001", nil) }
进行端口的监听:http.ListenAndServe(":8001", nil)
注册路径处理函数:http.HandleFunc("/hello", SayHello)
处理函数:func SayHello(w http.ResponseWriter, req *http.Request)
有疑问加站长微信联系(非本文作者)