package mainimport ("fmt""net/http")func main() {// make GET requestresponse, error := http.Get("https://reqres.in/api/products")if error != nil {fmt.Println(error)}// print responsefmt.Println(response)}
As we can see in the code given above, the typical response of the GET request contains a large amount of incoherent data, like the header and the properties of the request.
Most of the time, the data that we may be interested in lies in the response body
.
To read the body of the response, we need to access its Body
property first.
We can access the Body
property of a response using the ioutil.ReadAll()
method. This method returns a body and an error. When the error is nil
, the body that is returned contains the data, and vice versa.
Note: The
io/ioutil
package provides I/O utility functions.
body, error := ioutil.ReadAll(response.Body)
After reading data from the Body
, we should close it in order to prevent a memory leak:
response.Body.Close()
package mainimport ("fmt""net/http""io/ioutil")func main() {// make GET requestresponse, error := http.Get("https://reqres.in/api/products")if error != nil {fmt.Println(error)}// read response bodybody, error := ioutil.ReadAll(response.Body)if error != nil {fmt.Println(error)}// close response bodyresponse.Body.Close()// print response bodyfmt.Println(string(body))}
Line 11: We make a GET request to this URL.
Line 17: If there are no errors, we use the ioutil.ReadAll()
function to read the body of the response and store it in the body
variable.
Line 22: After we read the body of the response, we close it.
Line 25: We stringify the data contained in the body
variable and output it on the console.