finclip-app-manager/vendor/github.com/zzfup/go-fetch/README.md

135 lines
2.4 KiB
Markdown

# go-fetch
a http client like node-fetch
# usage
```
go get -u github.com/zzfup/go-fetch
```
# API
## Fetch(url[, options])
- url: string. should be an absolute url, such as http://example.com/.
- options: map[string]string. the default values are here:
```golang
Options{
Method: "GET",
Header: map[string]string{
"Accept-Encoding": "gzip,deflate",
"Accept": "*/*",
},
Body: nil,
Timeout: 20 * time.Millisecond,
}
```
## NewDefaultOptions()
return a defautl options.
you can also create an Options, like this:
```golang
options := fetch.Options{
Method: "POST",
Header: headers, // your custom header, its type is map[string]string
Body: payload, // your request body, its type is []byte
}
```
## ToString()
convert the respone body to string
## BindJSON(i interface{})
convert the response body to a struct or a map
# example
```golang
options := fetch.Options{}
// option = fetch.NewDefaulOptions()
resp, err := fetch.Fetch("https://www.baidu.com", fetch.Options{})
fmt.Println(err)
fmt.Println(resp.ToString())
```
## GET
```golang
import "github.com/zzfup/go-fetch"
import "fmt"
// header can be just like this
var headers = map[string]string{
"Accept": "application/json, text/plain, */*",
"Content-Type": "application/json",
}
func main(){
url := "https://www.example.com"
options := fetch.Options{
Method: "GET",
Header: headers,
Timeout: 2 * time.Second,
}
resp, err := fetch.Fetch(url, options)
if err != nil {
return err
}
fmt.Println(resp.StatusCode)
fmt.Println(resp.ToString)
var j struct{
Test string `json:"test"`
}
err := resp.BindJSON(&j)
fmt.Println(j)
}
```
## POST
```golang
import "github.com/zzfup/go-fetch"
import "fmt"
// header can be just like this
var headers = map[string]string{
"Accept": "application/json, text/plain, */*",
"Content-Type": "application/json",
}
func main(){
url := "https://www.example.com"
payload, err := json.Marshal(a) // a can be a struct or a map
options := fetch.Options{
Method: "POST",
// Header: headers,
Body: payload
// Timeout: 2 * time.Second,
}
resp, err := fetch.Fetch(url, options)
if err != nil {
return err
}
fmt.Println(resp.StatusCode)
fmt.Println(resp.ToString)
var j struct{
Test string `json:"test"`
}
err := resp.BindJSON(&j)
fmt.Println(j)
}
```