Go语言---HTTP编程基础(HTTP服务端以及客户端实现)

HTTP 编程

Go 语言标准库内建提供了 net/http 包,涵盖了 HTTP 客户端和服务端的具体实现。使用net/http 包,我们可以很方便地编写 HTTP 客户端或服务端的程序。

HTTP服务端

package main

import (
	"fmt"
	"net/http"
)

// w 给客户端回复数据 req 读取客户端发送的数据
func HandConn(w http.ResponseWriter, req *http.Request) {
	fmt.Println("req.Method=", req.Method)
	fmt.Println("req.URL=", req.URL)
	fmt.Println("req.Header=", req.Header)
	fmt.Println("req.Body=", req.Body)

	w.Write([]byte("hello go"))
}
func main() {
	//注册处理函数,用户连接,自动调用指定的处理函数
	http.HandleFunc("/", HandConn)

	http.ListenAndServe(":8000", nil)
}

HandleFunc底层

func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
	if use121 {
		DefaultServeMux.mux121.handleFunc(pattern, handler)
	} else {
		DefaultServeMux.register(pattern, HandlerFunc(handler))
	}
}
  • “/”可以指定我们在网址后面输入的东西。

handler func(ResponseWriter, *Request)

func HandConn(w http.ResponseWriter, req *http.Request) {
	fmt.Println("req.Method=", req.Method)
	fmt.Println("req.URL=", req.URL)
	fmt.Println("req.Header=", req.Header)
	fmt.Println("req.Body=", req.Body)

	w.Write([]byte("hello go"))
}
  • w 给客户端回复数据 req 读取客户端发送的数据

这时,我们在浏览器输入,就可以得到我们想要的响应。

在这里插入图片描述
在这里插入图片描述
实际上,服务端GO语言,已经为我们提供好了。

HTTP客户端

package main

import (
	"fmt"
	"net/http"
)

func main() {
	//resp, err := http.Get("http://www.baidu.com")
	resp, err := http.Get("http://127.0.0.1:8000")
	if err != nil {
		fmt.Println("http.Get.err=", err)
		return
	}

	defer resp.Body.Close()

	fmt.Println("Status=", resp.Status)
	fmt.Println("StatusCode=", resp.StatusCode)
	fmt.Println("Header=", resp.Header)
	fmt.Println("Body=", resp.Body)

	buf := make([]byte, 4*1024)
	var tmp string
	for {
		n, err := resp.Body.Read(buf)
		if n == 0 {
			fmt.Println("read err=", err)
			break
		}
		tmp += string(buf[:n])
	}

	fmt.Println("tmp=", tmp)
}
  • 打开刚刚写得服务端
  • 在打开客户端
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值