脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - golang中的net/http库基本使用详解

golang中的net/http库基本使用详解

2024-04-23 16:20淡墨@~无痕 Golang

今天给大家分享golang中的net/http库基本使用方法,文章开头给大家详细介绍了标准库net/http如何处理一个请求,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

关于net/http库

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

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请求会调用不同的处理函数。
调用“/”路由处理方法得到的结果是:

golang中的net/http库基本使用详解

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

golang中的net/http库基本使用详解

发送Get请求并获取响应

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

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

golang中的net/http库基本使用详解

发送Post请求并获取响应

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

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

golang中的net/http库基本使用详解

到此这篇关于golang中的net/http库基本使用详解的文章就介绍到这了,更多相关golang net/http库内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_46198325/article/details/137845936

延伸 · 阅读

精彩推荐