Aller au contenu

API de géolocalisation IP

Obtenez la position approximative de la requête en cours sans demander la position de l'appareil.

Position approximative

appel à api.unmap.dev…

Il s'agit du réseau par lequel la requête est arrivée. Ce n'est pas un relevé GPS, et ce n'est pas la recherche d'une adresse que vous fournissez. Les cartes, le géocodage et les itinéraires restent les API principales. La géolocalisation IP est une primitive modeste sur la même clé.

La géolocalisation IP est approximative. Le résultat peut identifier la ville ou la région associée au réseau de la personne plutôt que l'endroit où elle se trouve. Un VPN, un réseau mobile, un réseau d'entreprise ou un proxy peut changer le résultat de façon importante.

Chaque requête exige une clé API ; voir Authentification. Une requête compte pour un appel dans le même bassin que les cartes, le géocodage et les itinéraires. Il n'y a pas de crédit distinct.

La géolocalisation IP peut répondre pour une requête hors du Canada, là où les métadonnées réseau existent. Cela n'étend pas les cartes, le géocodage ni les itinéraires. La couverture des itinéraires reste le Canada.

La passerelle ne conserve pas le résultat, et elle n'ajoute pas de champ de position à son journal de requêtes. Le journal reste ce qu'il est déjà : méthode, classe de point de terminaison, statut et durée.

Démarrage rapide

import { Unmap } from "@unmap/sdk";
 
const unmap = new Unmap({ key: "um_live_..." });
const location = await unmap.geolocation.ip();
 
console.log(location.city);
console.log(location.country);

@unmap/sdk expose ceci comme unmap.geolocation.ip(). Il n'y a pas de paquet séparé, ni de hook React ou Vue : l'appel est un seul await.

Requête

GET /ip

Aucun paramètre en dehors de la clé. La position est celle de l'appelant. Vous ne pouvez pas passer une adresse.

curl "https://api.unmap.dev/ip?key=VOTRE_CLE"

La clé fonctionne aussi comme Authorization: Bearer ou X-API-Key, comme sur toutes les autres routes.

Réponse

{
  "ip": "203.0.113.42",
  "location": { "lat": 51.05, "lng": -114.07 },
  "city": "Calgary",
  "region": "Alberta",
  "regionCode": "AB",
  "postalCode": "T2P",
  "country": "CA",
  "continent": "NA",
  "timezone": "America/Edmonton",
  "network": { "asn": 12345, "organization": "Example ISP" },
  "precision": "approximate"
}

Un champ que le réseau n'a pas identifié vaut null. La requête retourne quand même 200.

{
  "city": null,
  "postalCode": null,
  "country": "CA",
  "precision": "approximate"
}

precision vaut toujours "approximate". Les coordonnées sont arrondies à deux décimales, soit environ un kilomètre. country est un code ISO 3166-1 alpha-2.

Cache-Control vaut private, no-store. Ne placez pas cette réponse dans un cache partagé. Elle décrit l'appelant, et l'appelant suivant est quelqu'un d'autre.

Initialiser une carte

import { Unmap } from "@unmap/sdk";
 
const key = "um_live_...";
const unmap = new Unmap({ key });
const geo = await unmap.geolocation.ip();
 
const map = new Unmap({
  key,
  container: "#map",
  center:
    geo.location.lng != null && geo.location.lat != null
      ? [geo.location.lng, geo.location.lat]
      : [-96, 56],
});

center est [longitude, latitude]. Le repli est une vue du Canada lorsque le réseau n'a nommé aucune des deux coordonnées. Le point de départ est un cadrage, pas une affirmation sur l'endroit où se trouve la personne.

Ce que ceci ne fait pas

  • Chercher une adresse IP arbitraire. GET /ip/{address} ne fait pas partie de cette API.
  • Conserver un historique d'adresses, ni constituer un profil de visiteur.
  • Détecter les VPN, les proxys ou Tor, ni noter une requête pour la fraude.
  • Demander au navigateur la position de l'appareil.

Une erreur serveur est réservée à une défaillance réelle de la passerelle. Des métadonnées manquantes donnent un corps partiel, pas une erreur.