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

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

相关推荐
ReedFoley3 小时前
【笔记】动手学Ollama 第五章 Ollama 在 LangChain 中的使用 - Python 集成
笔记·langchain
月盈缺3 小时前
学习嵌入式的第二十二天——数据结构——双向链表
数据结构·学习·链表
★YUI★5 小时前
学习游戏制作记录(制作系统与物品掉落系统)8.16
学习·游戏·ui·unity·c#
努力还债的学术吗喽5 小时前
【速通】深度学习模型调试系统化方法论:从问题定位到性能优化
人工智能·深度学习·学习·调试·模型·方法论
Mr Sorry9 小时前
Non-stationary Diffusion For Probabilistic Time Series Forecasting论文阅读笔记
论文阅读·笔记
南猿北者10 小时前
Cmake学习笔记
笔记·学习·策略模式
码小文10 小时前
Altium Designer 22使用笔记(8)---PCB电气约束设置
笔记·嵌入式硬件·硬件工程·ad22
diablobaal11 小时前
云计算学习100天-第26天
学习·云计算
测试老哥12 小时前
pytest+requests+allure自动化测试接入Jenkins学习
自动化测试·软件测试·学习·测试工具·职场和发展·jenkins·pytest
UserNamezhangxi13 小时前
kotlin 协程笔记
java·笔记·kotlin·协程