Come effettuare una richiesta alle API DNS di Google in Go

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