Eseguire richieste HTTP get in Go

Mattepuffo's logo
Eseguire richieste HTTP get in Go

Eseguire richieste HTTP get in Go

Rispetto ad altri linguaggi Go ha un modo un pò tutto suo di eseguire richieste HTTP.

Non tanto nell'eseguire la richiesta vera a propria, ma quanto nel leggere la risposta.

Come potete vedere dalla documentazione, la funzione Get restituisce due valori:

  • un puntatore Response
  • un error

La prima è una struct che al suo interno ha Body che è d tipo io.ReadCloser.

Se andate a vedere, in sostanza dobbiamo usare la funzione Read a cui bassare un array di byte per avere la risposta "chiara".

Ma penso sia più facile vederlo che spiegarlo:

package main

import (
	"fmt"
	"net/http"
	"os"
)

func main() {
	resp, err := http.Get("https://www.google.com")

	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	fmt.Println(resp.Body)

	bs := make([]byte, 99999)
	resp.Body.Read(bs)
	fmt.Println(string(bs))
}

Il primo print restituirà dati inutilizzabili, mentre il secondo ci visualizzerà il codice della pagina.

Abbiamo anche un altro modo:

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
)

func main() {
	resp, err := http.Get("https://www.google.com")

	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	body, err2 := ioutil.ReadAll(resp.Body)

	if err2 != nil {
		fmt.Println(err2)
		os.Exit(1)
	}

	sb := string(body)
	fmt.Printf(sb)
}

Il risultato sarà lo stesso, solo che usiamo ReadAll.

Enjoy!


Condividi

Commentami!