【二、http】go的http基本请求设置(设置查询参数、定制请求头)get和post类似

一、设置url后边的参数,(get和post请求为例子)

cpp 复制代码
func requstByParamsGet(){
	requst, err := http.NewRequest(http.MethodGet, "http://httpbin.org/get", nil)
	if err != nil {
		fmt.Println("ss")
	}

	params := make(url.Values)
	params.Add("name", "kaiyue")
	params.Add("age", "18")

	//encode之后会生成如下,name=kaiyue&age=18
	requst.URL.RawQuery = params.Encode()
	r, err := http.DefaultClient.Do(requst)
	if err != nil {
		fmt.Println("ss")
	}
	defer r.Body.Close()
	printBody(r)
}

func requstByParamsPost(){
	requst, err := http.NewRequest(http.MethodPost, "http://httpbin.org/post", nil)
	if err != nil {
		fmt.Println("ss")
	}

	params := make(url.Values)
	params.Add("name", "kaiyue")
	params.Add("age", "18")

	//encode之后会生成如下,name=kaiyue&age=18, 是组成url问号后边的参数
	requst.URL.RawQuery = params.Encode()
	r, err := http.DefaultClient.Do(requst)
	if err != nil {
		fmt.Println("ss")
	}
	defer r.Body.Close()
	printBody(r)
}
func main() {
	requstByParamsPost()
}

结果:

cpp 复制代码
{
  "args": {
    "age": "18", 
    "name": "kaiyue"
  }, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept-Encoding": "gzip", 
    "Content-Length": "0", 
    "Host": "httpbin.org", 
    "User-Agent": "Go-http-client/1.1", 
    "X-Amzn-Trace-Id": "Root=1-6544e26c-2a47c0392e3351a71259c068"
  }, 
  "json": null, 
  "origin": "120.244.60.192", 
  "url": "http://httpbin.org/post?age=18&name=kaiyue"
}

二、定制http头中的参数

cpp 复制代码
func requstByHeader(){
	requst, err := http.NewRequest(http.MethodGet, "http://httpbin.org/get", nil)
	if err != nil {
		fmt.Println("ss")
	}

	requst.Header.Add("user-agent", "chrome")
	r, err := http.DefaultClient.Do(requst)
	if err != nil {
		fmt.Println("ss")
	}
	defer r.Body.Close()
	printBody(r)
}

func main() {
	requstByHeader()
}

结果:

cpp 复制代码
{
  "args": {}, 
  "headers": {
    "Accept-Encoding": "gzip", 
    "Host": "httpbin.org", 
    "User-Agent": "chrome", 
    "X-Amzn-Trace-Id": "Root=1-6544e394-14143f26584a7eed32728fd7"
  }, 
  "origin": "120.244.60.192", 
  "url": "http://httpbin.org/get"
}

可以看到其中头部信息已经打印出自己增加的部分内容

相关推荐
名字还没想好☜10 小时前
Go context.AfterFunc 实战(Go 1.21):context 一取消就自动跑清理,告别手写 goroutine 监听 Done
后端·golang·go
web守墓人11 小时前
【goed/ui】自定义组件设计思想篇
linux·windows·ui·golang
布莱克6052 天前
HTTP 状态码详解:从分类到实战
计算机网络·http·状态码
StevenSurpass2 天前
打印业务彻底解耦:FastPrintAgent 统一 JSON 模型 + FastReport 引擎的设计与落地
mqtt·http·中间件·打印·fastreport
chenqianghqu2 天前
go语言SDK升级到1.27更新调试
golang
ttwuai2 天前
Go开源后台管理系统推荐:怎么先排除 Fork、镜像和同名项目?
golang
参.商.3 天前
【Day 53】76. 最小覆盖子串
leetcode·golang
传奇开心果编程3 天前
【Go入门练中学】第2课:条件与循环
后端·学习·golang
小此方3 天前
Linux网络(十二):HTTP短连接与长连接:从Connection机制到Cookie、Session,彻底理解HTTP的无状态
服务器·网络·http
江畔柳前堤3 天前
On-Policy Distillation 全景深潜
人工智能·网络协议·目标检测·http·机器学习·chatgpt·重构