Go语言标准库中内置了HTTP包,可以轻松地进行HTTP编程。下面介绍一下在Go语言中使用HTTP包进行HTTP编程的基本流程。
- 建立HTTP服务器
使用http.ListenAndServe()函数建立一个简单的HTTP服务器。示例代码如下:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World!")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
在该示例代码中,我们定义了一个名为handler的处理器函数,在其中向客户端发送一条信息。然后通过调用http.HandleFunc()函数将该处理器函数注册到默认的ServeMux路由器上,最后通过调用http.ListenAndServe()函数启动服务器。
- 发起HTTP请求
使用http.NewRequest()和http.Client.Do()函数发起一个简单的GET请求。示例代码如下:
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
resp, err := http.Get("https://www.baidu.com")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}
在该示例代码中,我们使用http.Get()函数发起了一个GET请求,并读取响应内容。
- 定义自定义处理器
我们也可以定义自己的处理器函数,通过实现http.Handler接口来完成。示例代码如下:
package main
import (
"fmt"
"net/http"
)
type myHandler struct{}
func (h *myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World!")
}
func main() {
handler := &myHandler{}
http.ListenAndServe(":8080", handler)
}
在该示例代码中,我们定义了一个名为myHandler的处理器类型,并实现了http.Handler接口中的方法ServeHTTP()。然后通过将该处理器注册到默认的ServeMux路由器上,最后通过调用http.ListenAndServe()函数启动服务器。
总之,在Go语言中使用HTTP包进行HTTP编程非常简单易懂,只需要掌握基本的HTTP协议和一些常见API即可。




