Le API DNS di Google consentono agli sviluppatori di eseguire interrogazioni DNS e ottenere risposte JSON. In questo articolo, vedremo come effettuare una richiesta a queste API utilizzando il linguaggio di programmazione Go.
Inizia creando una directory per il tuo progetto Go. Ad esempio:
mkdir google-dns-api
cd google-dns-api
All'interno della directory del progetto, esegui il comando go mod init per inizializzare un nuovo modulo Go:
go mod init google-dns-api
Crea un nuovo file chiamato main.go
e aprilo nel tuo editor di testo. Aggiungi il seguente codice:
package main
import (
"encoding/json"
"fmt"
"net/http"
)
// Struct per rappresentare la risposta JSON
type DNSResponse struct {
Status int `json:"Status"`
Answer []struct {
Name string `json:"name"`
Type int `json:"type"`
TTL int `json:"TTL"`
Data string `json:"data"`
} `json:"Answer"`
}
func main() {
// URL dell'API DNS di Google
url := "https://dns.google/resolve?name=example.com&type=A"
// Effettuare la richiesta HTTP
resp, err := http.Get(url)
if err != nil {
fmt.Println("Errore durante la richiesta:", err)
return
}
defer resp.Body.Close()
// Decodificare la risposta JSON
var dnsResp DNSResponse
if err := json.NewDecoder(resp.Body).Decode(&dnsResp); err != nil {
fmt.Println("Errore durante la decodifica della risposta:", err)
return
}
// Stampare i risultati
for _, answer := range dnsResp.Answer {
fmt.Printf("Name: %s, Type: %d, TTL: %d, Data: %s\n", answer.Name, answer.Type, answer.TTL, answer.Data)
}
}
In questo esempio, stiamo effettuando una richiesta per il record A di "example.com". La risposta JSON viene decodificata in una struct Go e stampata in console.
Dettagli del Codice:
- Importazione dei Pacchetti: Importiamo i pacchetti necessari (
encoding/json
,fmt
, enet/http
). - Definizione della Struct: La struct
DNSResponse
rappresenta il formato della risposta JSON. - Effettuare la Richiesta HTTP: Usiamo
http.Get
per effettuare una richiesta GET al servizio API DNS di Google. - Decodifica della Risposta: Usiamo
json.NewDecoder
per decodificare la risposta JSON direttamente nel tipo Go definito. - Stampa dei Risultati: Iteriamo attraverso le risposte e stampiamo i dettagli dei record DNS.
Conclusione
Effettuare richieste alle API DNS di Google in Go è relativamente semplice grazie alla libreria net/http
di Go e alla sua capacità di gestire JSON in modo nativo. Questo esempio può essere esteso per gestire diversi tipi di record DNS, aggiungere error handling più sofisticato, o integrare questa funzionalità in un'applicazione più grande. Con Go, la potenza e la semplicità di effettuare richieste HTTP e gestire JSON rendono questo tipo di compito diretto e efficiente.