项目信息
- 项目地址:https://github.com/go-zoox/fetch
- 类别:Go
- 项目标题:简单、好用、强大的 Go HTTP Client
- 项目描述:
- 它是一个基于 Go HTTP Client 的上层应用,方便开发者使用,特别适合有前端 / Node.js 开发经验的开发者
- 支持 HTTP 基础方法
- 支持动态 JSON
- 支持超时/重试机制
- 支持取消机制
- 支持自定义代理
- 支持一键 Upload / Download
- 支持进度条等
亮点
示例代码
GET 方法
package main
import (
"github.com/go-zoox/fetch"
)
func main() {
response, err := fetch.Get("https://httpbin.org/get")
if err != nil {
panic(err)
}
fmt.Println(response.JSON())
}
POST 方法
package main
import (
"github.com/go-zoox/fetch"
)
func main() {
response, _ := fetch.Post("https://httpbin.org/post", &fetch.Config{
Body: map[string]interface{}{
"foo": "bar",
"foo2": "bar2",
"number": 1,
"boolean": true,
"array": []string{
"foo3",
"bar3",
},
"nest": map[string]string{
"foo4": "bar4",
},
},
})
if err != nil {
panic(err)
}
fmt.Println(response.JSON())
}
PUT 方法
package main
import (
"github.com/go-zoox/fetch"
)
func main() {
response, err := fetch.Put("https://httpbin.org/put", &fetch.Config{
Body: map[string]interface{}{
"foo": "bar",
"foo2": "bar2",
"number": 1,
"boolean": true,
"array": []string{
"foo3",
"bar3",
},
"nest": map[string]string{
"foo4": "bar4",
},
},
})
if err != nil {
panic(err)
}
fmt.Println(response.JSON())
}
DELETE 方法
package main
import (
"github.com/go-zoox/fetch"
)
func main() {
response, err := fetch.Delete("https://httpbin.org/Delete", &fetch.Config{
Body: map[string]interface{}{
"foo": "bar",
"foo2": "bar2",
"number": 1,
"boolean": true,
"array": []string{
"foo3",
"bar3",
},
"nest": map[string]string{
"foo4": "bar4",
},
},
})
if err != nil {
panic(err)
}
fmt.Println(response.JSON())
}
下载文件
package main
import (
"github.com/go-zoox/fetch"
)
func main() {
response, err := fetch.Download("https://httpbin.org/image", "/tmp/image.webp")
if err != nil {
panic(err)
}
}
上传文件
Upload
package main
import (
"github.com/go-zoox/fetch"
)
func main() {
file, _ := os.Open("go.mod")
response, err := Upload("https://httpbin.org/upload", file)
if err != nil {
panic(err)
}
fmt.Println(response.JSON())
}
自定义代理 Proxy
package main
import (
"github.com/go-zoox/fetch"
)
func main() {
response, err := fetch.Get("https://httpbin.org/ip", &fetch.Config{
Proxy: "http://127.0.0.1:17890",
})
if err != nil {
panic(err)
}
fmt.Println(response.JSON())
}
后续计划
- 支持 UNIX Domain Sockets
- 支持自定义 Cache
- 支持 WebDAV 协议
- 支持 Plugin System
- 支持 Middleware System