Discovering GeoIP Lite: Comprehensive Guide and API Usage Examples
The geoip-lite module offers a localized version of the MaxMind GeoIP database, enabling you to efficiently target geographical regions using IP addresses.
Introduction
With geoip-lite, you can perform IP geolocation lookups quickly in your Node.js applications. Here are some useful APIs provided by the library and how to use them.
Installation
npm install geoip-lite
API Examples
Basic Usage
const geoip = require('geoip-lite');
const ip = '207.97.227.239';
const geo = geoip.lookup(ip);
console.log(geo);
// Output: { range: [ 3483190784, 3483191039 ], country: 'US', region: 'TX', city: 'San Antonio', ll: [ 29.4969, -98.4032 ] }
Retrieve Country
const geo = geoip.lookup(ip);
const country = geo.country;
console.log(country);
// Output: 'US'
Retrieve City
const geo = geoip.lookup(ip);
const city = geo.city;
console.log(city);
// Output: 'San Antonio'
Retrieve Region
const geo = geoip.lookup(ip);
const region = geo.region;
console.log(region);
// Output: 'TX'
Retrieve Latitude and Longitude
const geo = geoip.lookup(ip);
const ll = geo.ll;
console.log(ll);
// Output: [29.4969, -98.4032]
Error Handling
const ip = 'invalid-ip';
try {
const geo = geoip.lookup(ip);
console.log(geo);
} catch (err) {
console.error('Error:', err.message);
}
Integrating geoip-lite with an Example Application
Let’s develop a simple Express application that uses geoip-lite to perform geolocation lookups.
App Example
const express = require('express');
const geoip = require('geoip-lite');
const app = express();
app.get('/geolocate/:ip', (req, res) => {
const ip = req.params.ip;
const geo = geoip.lookup(ip);
if (geo) {
res.json(geo);
} else {
res.status(404).send('Geolocation not found');
}
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
This basic Express application uses the geoip-lite library to perform geolocation lookups based on an IP address passed as a URL parameter. Try it out!
Hash: 90ca59daa79144335514c88a6fa26cea428624a8fd32a7b4d9607cd1ae743b5b