DoH client written in Golang with minimal dependencies, built on top of https://github.com/miekg/dns and standard http client (net/http) and based on DoH RFC
add dependency
go get github.com/tantalor93/doh-go
// create client with default settings resolving via CloudFlare DoH Server
c := doh.NewClient("https://1.1.1.1/dns-query")
// prepare payload
msg := dns.Msg{}
msg.SetQuestion("google.com.", dns.TypeA)
// send DNS query using HTTP POST method
r, err := c.SendViaPost(context.Background(), &msg)
if err != nil {
panic(err)
}
// do something with response
fmt.Println(dns.RcodeToString[r.Rcode])
// send DNS query using HTTP GET method
r, err = c.SendViaGet(context.Background(), &msg)
if err != nil {
panic(err)
}
// do something with response
fmt.Println(dns.RcodeToString[r.Rcode])