Vind de broncode en installatie-instructies voor de client van jouw taal.
Clientbibliotheken
Kies je taal
Installeer een client, voer één opzoeking uit en lees de antwoordvelden.
TypeScript / JavaScript
enrichip
Uitvoering getest
Vereisten
ES-modules · getest op Node 26
Pakketversie
1.0.1
Installeren
Terminal
npm install enrichip@1.0.1
Eén IP-adres opzoeken
node lookup.mjs
lookup.mjs
import { queryIP } from "enrichip";const info = await queryIP("1.1.1.1");console.log(JSON.stringify(info, null, 2));
Clientgedrag
Dit voorbeeld gebruikt het gepubliceerde npm-pakket. Het IP-argument accepteert een tekenreeks, ook een verkorte IPv6-notatie; de HEAD-revisie van de repository valideert strenger.
De client biedt geen time-out per verzoek. Gebruik de HTTP-voorbeelden wanneer je de verzoekinstellingen rechtstreeks wilt beheren.
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()
Clientgedrag
Voer lookup.py uit vanuit de uitgecheckte broncode. De gepubliceerde distributie ipcore 0.1.2 bevat pakketmetadata, maar geen importeerbare ipapi-module; deze opzet gebruikt daarom de vastgelegde repositoryrevisie.
De client gebruikt Pydantics verouderde parse_raw-methode. Sluit de HTTP-client na gebruik; de wrapper heeft geen contextmanager.
Go
github.com/ipqwery/ipapi-go
Uitvoering getest
Vereisten
Go 1.24.2 of nieuwer
Broncoderevisie
fc7efc4
Installeren
Terminal
go get github.com/ipqwery/ipapi-go@fc7efc494870418b9f1143f642aba8f5802ebf9f
Voer het installatiecommando uit binnen een Go-module. QueryIP geeft een geneste IPInfo-waarde terug en een fout bij niet-geslaagde HTTP-antwoorden.
De client heeft geen time-out per aanroep. De omitempty-tags laten de waarden false en 0 weg wanneer je het resultaat opnieuw serialiseert; de ingelezen waarden blijven behouden.
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(())}
Clientgedrag
Installeer de vastgelegde broncoderevisie in een Cargo-project; de gedocumenteerde crates.io-versie is niet beschikbaar. Het voorbeeld begrenst de opzoeking met een Tokio-time-out van vijf seconden.
Optionele geneste velden gebruiken Option. De client decodeert het antwoord zonder eerst de HTTP-status te controleren; raadpleeg de HTTP-referentie voor het afhandelen van foutantwoorden.
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()); } }}
Clientgedrag
Bouw de vastgelegde broncode met JDK 21. Dit voorbeeld hoort in een project dat de gebouwde bibliotheek op het classpath heeft; het is hier niet tijdens uitvoering getest.
De broncode gebruikt statische methoden in ipapi.java, zonder API-sleutel. De io.ipapi-namespace en API-sleutelconstructor in het README komen niet overeen met deze revisie. De HTTP-status wordt niet vóór het decoderen gecontroleerd.
C++
ipapi-cpp
Update nodig
Vereisten
C++20 · CMake · libcurl
Broncoderevisie
a5ae87c
Installeren
Deze broncoderevisie moet vóór gebruik worden bijgewerkt.
De huidige client verwerkt elk libcurl-antwoordblok als een volledig JSON-document. Een antwoord dat over meerdere blokken is verdeeld, kan verkeerd worden gedecodeerd.
De risicoveldkoppeling laat is_datacenter en risk_score oningevuld. De callback voor het eigen IP-adres gebruikt bovendien een ander resultaattype dan de aanroepende code. Gebruik een standaard-HTTP-verzoek totdat deze codepaden zijn hersteld.
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));
Clientgedrag
Voer dit uit in een .NET-consoleproject. De geregistreerde interface heet IIApiClient, met twee I-tekens aan het begin; de naam IIpApiClient in het README is anders.
Het antwoord gebruikt geneste Isp-, Location- en Risk-objecten. Geef een annuleringstoken door om het verzoek te begrenzen. De oude methode voor meerdere IP-adressen wordt niet door de API ondersteund.
Vóór de integratie
Verzoeken voor één IP-adres
Gebruik één adres per opzoeking. Sommige clients bieden nog bulkmethoden aan; de API weigert bulkverzoeken. Bulkbeleid lezen
Antwoorden voor het eigen IP-adres
Het root-endpoint geeft het openbare IP-adres van het verbindende proces standaard als tekst terug. Gebruik voor een volledig JSON-antwoord voor het eigen IP-adres de HTTP-voorbeelden
Verificatiebereik
Uitvoering getest betekent dat het getoonde pakket of de broncoderevisie is uitgevoerd voor opzoekingen van één IP-adres. Broncodevoorbeelden zijn aan de code getoetst, maar niet uitgevoerd. Een broncoderevisie kan afwijken van een gepubliceerd pakket.