HTTP client for Go, its also support asynchronous request
go get github.com/nahid/gohttp
package main
import (
"github.com/nahid/gohttp"
"fmt"
)
func main() {
req := gohttp.NewRequest()
resp, err := req.
FormData(map[string]string{"name": "Nahid"}).
Post("https://httpbin.org/post")
if err != nil {
panic(err)
}
if resp.GetStatusCode() == 200 {
var resps map[string]interface{}
_ = resp.GetBodyWithUnmarshal(&resps)
fmt.Println(resps["form"])
}
}package main
import (
"github.com/nahid/gohttp"
"fmt"
)
func main() {
req := gohttp.NewRequest()
ch := make(chan *gohttp.AsyncResponse)
var users [3]string
users[0] = "nahid"
users[1] = "shipu"
users[2] = "sujan"
for i:=0; i<len(users); i++ {
req.
FormData(map[string]string{"user": users[i]}).
AsyncPost("http://domain.app/send", ch)
}
for i:=0; i<len(users); i++ {
op := <-ch
fmt.Println(op.GetBodyAsString())
}
}NewRequest(options ...Option)
Get(url string)Post(url string)Put(url string)Patch(url string)Delete(url string)
AsyncGet(url string, ch chan)AsyncPost(url string, ch chan)AsyncPut(url string, ch chan)AsyncPatch(url string, ch chan)AsyncDelete(url string, ch chan)
Headers(data map[string]string)FormData(data map[string]string)Json(data map[string]interface{})Query(data map[string]string{})Body(body []byte)Text(text string)BasicAuth(username, password string)MultipartFormData(data map[string]string{})Upload(name, file string)Uploads(files map[string]string{})UploadFromReader(param MultipartParam)UploadsFromReader(params []MultipartParam)
GetResp()GetStatusCode()GetBody()GetBodyAsByte()GetBodyAsString()GetBodyWithUnmarshal(v interface{})
See API doc https://godoc.org/github.com/nahid/gohttp