I have an HTTP endpoint that returns lines of text. Here is how I'm fetching it.
response, err := client.Do(request)
if err != nil {
log.Errorf("Error with request: %s", err)
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Errorf("Error: %s", err)
}
This is how I'm reading the body. The problem is that I have one large byte array from the reader, but I'm not entirely sure how to convert it from a byte array to a slice of lines.
How would I convert the byte array to a slice of lines?
You can use bytes.Split to break the response body into lines:
lines := bytes.Split(body, []byte{'
'}) // lines is a [][]byte
You can also use a scanner to iterate over the lines:
response, err := client.Do(request)
if err != nil {
log.Errorf("Error with request: %s", err)
}
defer response.Body.Close()
s := bufio.NewScanner(response.Body)
for s.Scan() {
// do something with s.Bytes() or s.Text()
}
if err := s.Err(); err != nil {
// handle error
}