मेरे पास एक कर्ल स्ट्रिंग है curl --unix-socket /var/run/docker.sock http://localhost/containers/json इसमें एक झंडा है --unix-sock मैं इस ध्वज को गोलांग में http अनुरोध पर कैसे सेट कर सकता हूं?

4
StKadilo 9 जिंदा 2020, 16:08

1 उत्तर

सबसे बढ़िया उत्तर

यूनिक्स सॉकेट से कनेक्ट करने के लिए http.Transport के DialContext फ़ील्ड का उपयोग करें (अधिकांश संक्षिप्तता के लिए छोड़े गए त्रुटि प्रबंधन):

package main

import (
    "context"
    "fmt"
    "log"
    "net"
    "net/http"
    "net/http/httputil"
)

func main() {
    c := &http.Client{
        Transport: &http.Transport{
            DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
                return (&net.Dialer{}).DialContext(ctx, "unix", "/var/run/docker.sock")
            },
        },
    }

    req, _ := http.NewRequest("GET", "http://localhost/containers/json", nil)

    res, err := c.Do(req)
    if err != nil {
        log.Fatal(err)
    }

    b, _ := httputil.DumpResponse(res, true)
    fmt.Println(string(b))
}
3
Peter 9 जिंदा 2020, 13:31