代码拉取完成,页面将自动刷新
轻量实用的golang请求库,不附带任何第三方库,完全使用标准库实现,让retry变得简单,让并发变得简单。
go.mod文件加入以下代码,然后执行go mod tidy
gitee.com/justin0218/maxrequest latest
package main
import (
"fmt"
"gitee.com/justin0218/maxrequest"
)
type Result struct {
Code int `json:"code"`
Data interface{} `json:"data"`
}
func main() {
var ret Result
url := "http://xxx.xx"
resp, body, err := maxrequest.New().Get(url).Result(&ret)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
fmt.Println(err)
fmt.Printf("%+v\n", ret)
}
package main
import (
"fmt"
"gitee.com/justin0218/maxrequest"
)
type Result struct {
Code int `json:"code"`
Data interface{} `json:"data"`
}
type PostData struct {
UserName string `json:"user_name"`
Password string `json:"password"`
}
func main() {
var req PostData
req.UserName = "测试"
req.Password = "xxsssss"
var ret Result
url := "http://xxx.xx"
resp, body, err := maxrequest.New().Post(url, req).Result(&ret)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
fmt.Println(err)
fmt.Printf("%+v\n", ret)
}
只需要把"Post()"改成"PostForm()"
func main() {
var req PostData
req.UserName = "测试"
req.Password = "xxsssss"
var ret Result
url := "http://xxx.xx"
resp, body, err := maxrequest.New().SetTimeout(10).SetRetry(3,3, nil).PostForm(url, req).Result(&ret)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
fmt.Println(err)
fmt.Printf("%+v\n", ret)
}
设置了10秒超时
resp, body, err := maxrequest.New().SetTimeout(10).Post(url, req).Result(&ret)
SetRetry第一个参数为重试次数,第二个参数为重试周期,单位:秒
package main
import (
"fmt"
"gitee.com/justin0218/maxrequest"
)
type Result struct {
Code int `json:"code" maxrequestRetry:"404"` //代表返回code=404时,将会进行重试,多个字段设置maxrequestRetry,其中一个满足就会进行重试
Data interface{} `json:"data"`
}
type PostData struct {
UserName string `json:"user_name"`
Password string `json:"password"`
}
func main() {
var req PostData
req.UserName = "测试"
req.Password = "xxsssss"
var ret Result
url := "http://xxx.xx"
resp, body, err := maxrequest.New().SetTimeout(10).SetRetry(3, 3, func(retryNotice maxrequest.RetryNotice) bool {
fmt.Printf("重试次数:%d", retryNotice.Num)
return false //return true 可以随时终止重试
}).Post(url, req).Result(&ret)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
fmt.Println(err)
fmt.Printf("%+v\n", ret)
}
同时发起多个请求,一次性拿到所有结果
func main() {
var req PostData
req.UserName = "测试"
req.Password = "xxsssss"
url := "http://xxx.xx"
r1 := maxrequest.New().SetTimeout(10).SetRetry(3, 3, nil).Post(url, req)
r2 := maxrequest.New().SetTimeout(10).SetRetry(3, 3, nil).Post(url, req)
r3 := maxrequest.New().SetTimeout(10).SetRetry(3, 3, nil).Post(url, req)
r4 := maxrequest.New().SetTimeout(10).SetRetry(3, 3, nil).Post(url, req)
r5 := maxrequest.New().SetTimeout(10).SetRetry(3, 3, nil).Post(url, req)
results := maxrequest.Go(r1, r2, r3, r4, r5)
fmt.Println("所有请求结果:%v", results)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。