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

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

相关推荐
喜欢踢足球的老罗6 分钟前
Qoder AI IDE深度体验:用Repo Wiki与AskModel重塑开源库学习范式
人工智能·学习·qoder
可可苏饼干1 小时前
NoSQL 与 Redis
数据库·redis·笔记·学习·nosql
想搞艺术的程序员1 小时前
Go 语言 interface 详解:从源码到实践
golang·interface
重生之我在番茄自学网安拯救世界1 小时前
网络安全中级阶段学习笔记(一):DVWA靶场安装配置教程与网络空间搜索语法
笔记·学习·网络安全·靶场·dvwa·fofa·google hack
foxsen_xia1 小时前
go(基础01)——协程
开发语言·算法·golang
源代码•宸1 小时前
GoLang并发简单例子(goroutine + channel + WaitGroup)
开发语言·经验分享·后端·学习·golang
稚辉君.MCA_P8_Java1 小时前
Gemini永久会员 Go 返回最长有效子串长度
数据结构·后端·算法·golang
摇滚侠1 小时前
零基础小白自学 Git_Github 教程,Git 命令行操作2,笔记19
笔记·git·github
TL滕1 小时前
从0开始学算法——第五天(初级排序算法)
数据结构·笔记·学习·算法·排序算法
走在路上的菜鸟1 小时前
Android学Dart学习笔记第十节 循环
android·笔记·学习·flutter