Watch-IP mit Go verwenden
github.com/Digitload/watch-ip-sdk-go (v0.1.1) umschließt GET /v1/geo mit kontextbewussten Anfragen und ohne Abhängigkeiten außerhalb der Standardbibliothek.
Installation
Erfordert Go 1.21+. Dieses Modul wird schreibgeschützt aus dem Haupt-Repository von Watch-IP in ein öffentliches Repository gespiegelt, damit go get es abrufen kann.
go get
go get github.com/Digitload/watch-ip-sdk-goSchnellstart
GetGeo nimmt als ersten Parameter einen context.Context — das Go-Äquivalent zum AbortSignal des JS-SDK. Wie bei den anderen serverseitigen SDKs setzen Sie WithOrigin, um die Prüfung der erlaubten Origins des Schlüssels zu erfüllen, wenn Sie von einem Server statt von einem Browser aus aufrufen. Jedes Standortfeld ist ein Pointer, da die Felder von Watch-IP unabhängig voneinander nullable sind — prüfen Sie auf nil, bevor Sie dereferenzieren.
Go
client, err := watchip.New("wip_pub_xxxxxxxx", watchip.WithOrigin("https://example.com"))
if err != nil {
log.Fatal(err)
}
geo, err := client.GetGeo(context.Background())
if err != nil {
log.Fatal(err)
}
if geo.Country != nil && geo.City != nil {
fmt.Println(*geo.Country, *geo.City)
} else {
fmt.Println("Standort für diese Verbindung nicht verfügbar")
}Fehlerbehandlung und Timeouts
Jeder Fehlschlag liefert einen *WatchIPError mit den Feldern Status und Code zurück. Begrenzen Sie die Anfragedauer mit context.WithTimeout statt mit einer Timeout-Option auf Client-Ebene.
Go
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
geo, err := client.GetGeo(ctx)
var wipErr *watchip.WatchIPError
if errors.As(err, &wipErr) {
fmt.Println(wipErr.Code, wipErr.Status, wipErr.Message)
}Was dieses SDK nicht abdeckt
Dieses Modul ruft nur GET /v1/geo auf. IP-Abfrage, E-Mail-Validierung und Risikoprüfungen sind separate Server-zu-Server-Endpoints ohne Go-Client bisher — rufen Sie sie direkt mit net/http auf, authentifiziert auf dieselbe Weise, wie es der Authentifizierungsleitfaden beschreibt.