Watch-IP'yi Go ile Kullanma
github.com/Digitload/watch-ip-sdk-go (v0.1.1), GET /v1/geo'yu context farkındalıklı isteklerle ve standart kütüphane dışında bağımlılık olmadan sarmalar.
Kurulum
Go 1.21+ gerektirir. Bu modül, go get'in getirebilmesi için ana Watch-IP deposundan herkese açık bir depoya salt okunur olarak yansıtılır (mirror).
go get
go get github.com/Digitload/watch-ip-sdk-goHızlı başlangıç
GetGeo, ilk argümanı olarak bir context.Context alır — Go'nun, JS SDK'sının AbortSignal'ine karşılığıdır. Diğer sunucu tarafı SDK'larda olduğu gibi, bir tarayıcıdan değil bir sunucudan çağırırken anahtarın izin verilen origin kontrolünü karşılamak için WithOrigin'i ayarlayın. Watch-IP alanları bağımsız olarak null olabildiğinden, her konum alanı bir pointer'dır — dereference etmeden önce nil kontrolü yapın.
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("bu bağlantı için konum kullanılamıyor")
}Hata işleme ve zaman aşımları
Her başarısızlık, Status ve Code alanlarına sahip bir *WatchIPError döndürür. İstek süresini bir istemci düzeyinde timeout seçeneği yerine context.WithTimeout ile sınırlayın.
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)
}Bu SDK'nın kapsamadıkları
Bu modül yalnızca GET /v1/geo'yu çağırır. IP sorgulama, e-posta doğrulama ve risk kontrolleri, henüz bir Go istemcisi olmayan ayrı sunucudan sunucuya endpoint'lerdir — bunları, kimlik doğrulama kılavuzunun anlattığı şekilde kimliği doğrulanmış olarak doğrudan net/http ile çağırın.