Go语言学习: req 包

一个好用的 go 语言的 http client 包
更新于: 2022-07-31 12:10:44

安装

go get github.com/imroc/req/v3

快速上手

  • 用的是默认的 HttpClient
  • 在实际使用,建议显示的创建 client: client := req.C().DevMode()
package main

import (
	"github.com/imroc/req/v3"
)

func main() {
	req.DevMode()
	req.Get("https://httpbin.org/get")
}

get 请求

func main() {
	client := req.C().DevMode()
	client.R().Get("https://httpbin.org/get")
}

post 请求

func main() {
	client := req.C().DevMode()
	client.R().SetBody("hello world").Post("http://httpbin.org/post")
}

post 请求,并返回数据

package main

import (
	"fmt"
	"github.com/imroc/req/v3"
)

type ResponseBody struct {
	Data string `json:"data"`
}

func main() {
	var body ResponseBody
	client := req.C()
	resp, err := client.R().SetBody("hello world").SetResult(&body).Post("http://httpbin.org/post")
	if err != nil {
		panic(err)
	}

	if resp.IsSuccess() {
		fmt.Printf("%+v\n", body.Data)
	}
}

请求参数

  • SetQueryParam("p1", "v1")
func main() {
	var body ResponseBody
	client := req.C().EnableDumpAllWithoutResponse()
	resp, err := client.R().SetQueryParam("p1", "v1").SetBody("hello world").SetResult(&body).Post("http://httpbin.org/post")
	if err != nil {
		panic(err)
	}

	if resp.IsSuccess() {
		fmt.Printf("%+v\n", body.Data)
	}
}

使用体验

  • 返回数据有点奇怪
  • API是 copy restry 的
  • 文档没有,只有一个 bilibili 视频
  • 优点:很好上手
  • 结论: 个人感觉,实际是 copy from restry的,我会直接去学 resty

参考