Package client provides an HTTP client for clean requests.
-
Get package:
go get -u github.com/gowww/client
-
Import it in your code:
import "github.com/gowww/client"
Use Get, Post, Put, Patch, Delete or Head with the destination URL to initiate a request.
Options are chainable:
file, err := os.Open("data/one.txt")
if err != nil {
panic(err)
}
defer file.Close()
req := client.Post("http://example.com").
DisableRedirect().
ForceMultipart().
Header("Accept-Language", "en").
UserAgent("Googlebot/2.1 (+http://www.google.com/bot.html)").
Cookie(&http.Cookie{Name: "session", Value: "123"}).
Value("id", "123").
Value("name", "Doe").
File("file", "one.txt", file).
OpenFile("picture", "one.png").
OpenFile("picture", "two.png")
Finally, use Do to send the requet and get the response or, eventually, the deferred first error of procedure:
res, err := req.Do()
if err != nil {
panic(err)
}
defer res.Close()
Don't forget to close the response body when done.
A Response wraps the standard http.Response and provides some utility functions.
Use Response.Cookie to retrieve a single cookie:
c, err := res.Cookie(tokenCookieName)
if err != nil {
// Generally, error is http.ErrNoCookie.
}
Use Response.JSON to decode a JSON body into a variable:
jsres := new(struct{
ID string `json:"id"`
})
res.JSON(jsres)
Debugging a request is pretty simple with Response.Dump.
It prints the request info, writes the body in a file and opens it in your browser.
res, err := client.Get("http://example.com").Do()
if err != nil {
panic(err)
}
res.Dump()