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

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

相关推荐
s_little_monster9 分钟前
【Linux】缓冲区和文件系统
linux·运维·服务器·经验分享·笔记·学习·学习方法
从未想放弃26 分钟前
golang性能分析之pprof
开发语言·后端·golang
StickToForever28 分钟前
第5章 软件工程(二)
经验分享·笔记·学习·职场和发展
流年诠释一切28 分钟前
MinIO Go 客户端 API
开发语言·后端·golang
BUG 劝退师34 分钟前
Golang概述
开发语言·后端·golang
StickToForever34 分钟前
第5章 软件工程(一)
经验分享·笔记·学习·职场和发展
愚戏师1 小时前
从零到一学习c++(基础篇--筑基期十一-类)
开发语言·数据结构·c++·学习·算法
程序员yt1 小时前
双非本南邮硕电子信息研一转码:优先掌握哪些编程语言?与学习路径推荐
qt·学习·考研
Magnetic_h1 小时前
《Effective Objective-C》阅读笔记(下)
笔记·ios·objective-c
Magnetic_h1 小时前
《Effective Objective-C》阅读笔记(上)
笔记·学习·macos·ios·objective-c·cocoa