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))
}

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

相关推荐
Starmoon_dhw13 分钟前
题解:P17078 夏日甜点
c++·学习·算法·图论
菩提树下的打坐22 分钟前
接口测试利器:REST Assured + WireMock
学习
一杯奶茶¥43 分钟前
c语言程序设计大学期末考试考研知识点重点笔记题库复习资料C语言重点考点题库资料合集
c语言·笔记·考研·c语言程序设计·c语言笔记
FakeOccupational2 小时前
【电路笔记 信号】传输线方程:从RLGC推导传输线特性阻抗
笔记
tyqtyq222 小时前
营养餐单规划:AI 科学饮食规划系统的鸿蒙实现
人工智能·学习·华为·职场和发展·生活·harmonyos
鱼听禅3 小时前
Ubuntu学习笔记-安装docker容器
学习·ubuntu·docker
Loving_enjoy4 小时前
DFT可测试性设计规则与检查:确保芯片可测试性的关键步骤
学习
r_oo_ki_e_4 小时前
Java反射机制学习笔记
java·笔记·学习
Nontee4 小时前
数据类型与包装类 — 一个新手学Java的数据类型笔记
java·笔记·python
ysa0510304 小时前
【板子】树上启发式合并
数据结构·c++·笔记·算法