golang学习笔记(net/http库基本使用)

关于net/http库

我们先看看标准库net/http如何处理一个请求。

go 复制代码
import (
	"fmt"
	"log"
	"net/http"
)

var count = 0

func main() {
	http.HandleFunc("/", handler)
	http.HandleFunc("/count", counter)
	log.Fatal(http.ListenAndServe("localhost:8000", nil))
}

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
	fmt.Printf("URL.Path = %q\n", r.URL.Path)
}

func counter(w http.ResponseWriter, r *http.Request) {
	count++
	fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
	fmt.Println(count)
}

代码块定义了两个不同的路由,分别是"/"和"/count",分别绑定 handler 和 counter, 根据不同的HTTP请求会调用不同的处理函数。

调用"/"路由处理方法得到的结果是:

调用"/count"路由处理方法得到的结果是:

发送Get请求并获取响应

go 复制代码
import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	resp, err := http.Get("https://www.baidu.com")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Println(string(body))
}

执行程序获取到的结果是:

发送Post请求并获取响应

go 复制代码
import (
	"fmt"
	"io/ioutil"
	"net/http"
	"strings"
)

func main() {
	payload := strings.NewReader("data=example")

	resp, err := http.Post("https://www.baidu.com", "application/x-www-form-urlencoded", payload)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	fmt.Println(string(body))
}

执行程序获取到的结果是:

相关推荐
-To be number.wan4 小时前
Python数据分析:SciPy科学计算
python·学习·数据分析
楼田莉子6 小时前
C++项目:日志&&线程池
linux·c++·学习·visual studio code
weixin_421585016 小时前
表示学习发展历程
学习
EmbedLinX7 小时前
嵌入式Linux之U-Boot
linux·服务器·笔记·学习
今儿敲了吗10 小时前
23| 画展
c++·笔记·学习·算法
我 see your eyes10 小时前
工作软件学习
学习
山岚的运维笔记12 小时前
SQL Server笔记 -- 第68章:内存中 OLTP(Hekaton)
数据库·笔记·sql·microsoft·sqlserver
winfreedoms13 小时前
ROS2机械臂——黑马程序员ROS2课程上课笔记(3)
arm开发·笔记
山岚的运维笔记13 小时前
SQL Server笔记 -- 第67章:数据库邮件(DBMAIL)
数据库·笔记·sql·microsoft·sqlserver