Znajdź kod źródłowy i instrukcje konfiguracji klienta dla wybranego języka.
Biblioteki klienckie
Wybierz swój język
Zainstaluj klienta, wykonaj jedno zapytanie i odczytaj pola odpowiedzi.
TypeScript / JavaScript
enrichip
Test uruchomieniowy
Wymagania
Moduły ES · sprawdzono na Node 26
Wersja pakietu
1.0.1
Instalacja
Terminal
npm install enrichip@1.0.1
Sprawdź pojedynczy IP
node lookup.mjs
lookup.mjs
import { queryIP } from "enrichip";const info = await queryIP("1.1.1.1");console.log(JSON.stringify(info, null, 2));
Działanie klienta
Ten przykład używa pakietu opublikowanego w npm. Argument IP przyjmuje ciąg znaków, w tym skróconą postać IPv6; HEAD repozytorium ma bardziej rygorystyczny walidator.
Klient nie udostępnia limitu czasu dla pojedynczego żądania. Użyj przykładów HTTP, jeśli potrzebujesz bezpośredniej kontroli nad ustawieniami żądania.
from ipapi.client import IPAPIClientclient = IPAPIClient()try: info = client.query_ip("1.1.1.1") print(info.model_dump_json(indent=2))finally: client.client.close()
Działanie klienta
Uruchom lookup.py z katalogu pobranego kodu źródłowego. Opublikowana dystrybucja ipcore 0.1.2 zawiera metadane pakietu, ale nie zawiera modułu ipapi, który można zaimportować; dlatego ta konfiguracja używa przypiętej rewizji repozytorium.
Klient używa przestarzałej metody parse_raw z Pydantic. Zamknij jego klienta HTTP po użyciu; wrapper nie udostępnia menedżera kontekstu.
Go
github.com/ipqwery/ipapi-go
Test uruchomieniowy
Wymagania
Go 1.24.2 lub nowszy
Rewizja kodu źródłowego
fc7efc4
Instalacja
Terminal
go get github.com/ipqwery/ipapi-go@fc7efc494870418b9f1143f642aba8f5802ebf9f
Uruchom polecenie instalacji wewnątrz modułu Go. QueryIP zwraca zagnieżdżoną wartość IPInfo oraz błąd w przypadku nieudanego statusu HTTP.
Klient nie ma limitu czasu dla pojedynczego wywołania. Tagi omitempty pomijają wartości false i zero przy ponownej serializacji wyniku; odczytane wartości pozostają zachowane.
use std::time::Duration;#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let info = tokio::time::timeout( Duration::from_secs(5), ipapi::query_ip("1.1.1.1"), ).await??; println!("{}", info.ip); if let Some(isp) = info.isp { println!("{:?}", isp.asn); } Ok(())}
Działanie klienta
Zainstaluj przypiętą rewizję źródeł w projekcie Cargo; udokumentowana wersja crates.io jest niedostępna. Przykład ogranicza zapytanie pięciosekundowym limitem czasu Tokio.
Opcjonalne pola zagnieżdżone używają Option. Klient dekoduje odpowiedź bez wcześniejszego sprawdzenia statusu HTTP; obsługę odpowiedzi błędów opisuje dokumentacja HTTP.
import ipapi.java.Ipapi;import ipapi.java.IPInfo;public class Lookup { public static void main(String[] args) throws Exception { IPInfo info = Ipapi.queryIp("1.1.1.1"); System.out.println(info.getIp()); if (info.getIsp() != null) { System.out.println(info.getIsp().getAsn()); } }}
Działanie klienta
Zbuduj przypiętą rewizję źródeł przy użyciu JDK 21. Ten przykład należy umieścić w projekcie korzystającym ze zbudowanej biblioteki obecnej w classpath; nie był tutaj testowany uruchomieniowo.
Źródła używają metod statycznych w ipapi.java, bez klucza API. Przestrzeń nazw io.ipapi i konstruktor z kluczem API z README nie odpowiadają tej rewizji. Status HTTP nie jest sprawdzany przed dekodowaniem.
C++
ipapi-cpp
Wymagana aktualizacja
Wymagania
C++20 · CMake · libcurl
Rewizja kodu źródłowego
a5ae87c
Instalacja
Ta rewizja kodu źródłowego wymaga aktualizacji przed użyciem.
Obecny klient parsuje każdy fragment odpowiedzi libcurl jako kompletny dokument JSON. Odpowiedź podzielona na fragmenty może zostać niepoprawnie zdekodowana.
Mapowanie ryzyka pozostawia is_datacenter i risk_score bez ustawionej wartości. Callback własnego IP używa też innego typu wyniku niż kod wywołujący. Do czasu naprawy tych ścieżek używaj standardowego żądania HTTP.
using IpApi;using Microsoft.Extensions.DependencyInjection;using System.Text.Json;var services = new ServiceCollection();services.AddIpApiClient();using var provider = services.BuildServiceProvider();var client = provider.GetRequiredService<IIApiClient>();using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(5));var info = await client.QueryIpAsync("1.1.1.1", timeout.Token);if (info is null) throw new InvalidOperationException("Empty IP response");Console.WriteLine(JsonSerializer.Serialize(info));
Działanie klienta
Uruchom przykład w projekcie konsolowym .NET. Zarejestrowany interfejs to IIApiClient, z dwoma początkowymi znakami I; nazwa IIpApiClient w README jest inna.
Odpowiedź używa zagnieżdżonych obiektów Isp, Location i Risk. Przekaż token anulowania, aby ograniczyć żądanie. Stara metoda dla wielu IP nie jest obsługiwana przez API.
Przed integracją
Zapytania o pojedynczy IP
Używaj jednego adresu na zapytanie. Niektóre klienty nadal udostępniają metody zbiorcze; API odrzuca takie żądania. Przeczytaj zasady zapytań zbiorczych
Odpowiedzi dla własnego IP
Główny endpoint domyślnie zwraca publiczny IP procesu nawiązującego połączenie jako tekst. Aby otrzymać pełną odpowiedź JSON dla własnego IP, użyj przykładów HTTP
Zakres weryfikacji
Test uruchomieniowy oznacza, że pokazany pakiet lub rewizję kodu uruchomiono dla zapytań o pojedynczy IP. Przykłady źródłowe sprawdzono względem kodu, ale ich nie uruchamiano. Rewizja źródeł może różnić się od opublikowanego pakietu.