Come effettuare una richiesta alle API DNS di Google in Go

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, e net/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.

Torna su