Migración

ipstack frente a ip-api.com frente a ipinfo.io: comparación de la estructura de los datos

Los proveedores de geolocalización de IP recurren en su mayoría a categorías similares de datos subyacentes (país, región, ciudad, coordenadas y propietario de la red), pero los empaquetan con formas notablemente distintas, y esas formas determinan una parte sorprendente del trabajo real de integración cuando los evalúas o cambias de uno a otro.

ip-api.com prefiere una estructura plana. Campos como country, regionName, city, lat, lon, isp y query están directamente en el nivel superior de la respuesta, sin anidamiento, lo que la hace rápida de leer y fácil de volcar en una fila plana de base de datos o en una sola línea de registro.

ipinfo.io comprime dos valores que suelen ir juntos en cadenas únicas: un campo loc que contiene la latitud y la longitud juntas como una cadena separada por comas, y un campo org que combina el número de sistema autónomo y el nombre de la organización en una sola cadena, algo así como un número AS seguido del nombre de una empresa. Esto es eficiente para el registro y la visualización rápida, pero requiere una operación de división antes de poder usar cualquiera de los dos valores como un número propiamente dicho o compararlo mediante código.

ipstack va en la dirección contraria, con más estructura. Devuelve campos de nivel superior como type, continent_code, latitude y longitude como valores separados, y agrupa los detalles de red y del ISP en un objeto connection anidado en lugar de una cadena plana, lo que conviene a las aplicaciones que quieren tratar ese detalle como un dato propio y diferenciado.

Ninguna de estas tres formas es objetivamente mejor; reflejan distintas suposiciones sobre cómo usará los datos quien hace la llamada. Una estructura plana es más rápida para escribir código de análisis improvisado. Una estructura compacta de cadenas combinadas es eficiente para canalizaciones de registro que almacenan una línea por solicitud. Una estructura anidada mantiene agrupados los campos relacionados para aplicaciones que construyen un modelo de datos interno más elaborado.

My Geocode ofrece hosts compatibles para estas tres formas exactas: los campos planos de ip-api en /compatibility/ip-api/, las cadenas compactas loc y org de ipinfo en /compatibility/ipinfo/, y el objeto anidado connection de ipstack en /compatibility/ipstack/. Esto significa que una comparación como esta no tiene por qué terminar con un único ganador elegido para todos; un equipo puede usar la forma que su código existente ya espera, o incluso probar más de una forma con los mismos datos de consulta subyacentes durante una evaluación, ya que los tres hosts están en la misma plataforma, con las mismas opciones de autenticación y los mismos precios.

Como aquí las consultas de IP funcionan por completo de principio a fin, y no solo en cuanto a la forma, esta comparación se puede probar directamente: apunta un pequeño script a los tres hosts compatibles con las mismas direcciones IP de prueba y compara la estructura de salida real que recibiría tu propio código de análisis. La autenticación en cualquiera de ellos acepta una cabecera X-API-Key, Authorization: Bearer, autenticación HTTP Basic o un parámetro de consulta, y 2.500 solicitudes al día son gratuitas sin necesidad de clave en cualquiera de los tres, lo que convierte una comparación estructural en paralelo en un ejercicio de bajo coste antes de comprometerse con una forma u otra.