2 个版本
0.7.1 | 2020 年 6 月 2 日 |
---|---|
0.7.0 | 2020 年 6 月 1 日 |
#215 in 地理空间
28KB
402 行
geoip-api
如果您不需要自动更新的数据库或 Prometheus 指标,您应该查看 ffissore/geoip-rs,这是本项目的灵感来源。
geoip-api 是一个 geoip 服务:它提供指定 IP 地址的地理位置信息。它支持 IPV4 和 IPV6。
-
当使用
ip
查询参数调用时,它解析指定的 IP 地址。例如:https://127.0.0.1:3000/?ip=216.58.205.132如果提供的 IP 地址无效,它将返回一个错误
-
默认情况下,响应将是英文。可以提供可选的
lang
查询参数:如果可用,返回的数据将使用该语言。当前列表包括:de
、en
、es
、fr
、ja
、pt-BR
、ru
、zh-CH
。例如:https://127.0.0.1:3000/?ip=216.58.205.132&lang=ja -
geoip-api 将定期检查 maxminddb 在线更新,而不是从文件中读取。有关如何配置此功能的示例,请参阅下面的用法。
示例响应
有效的 IP 地址
{
"ip_address": "46.51.179.90",
"latitude": 53.3331,
"longitude": -6.2489,
"postal_code": "D02",
"continent_code": "EU",
"continent_name": "Europe",
"country_code": "IE",
"country_name": "Ireland",
"region_code": "L",
"region_name": "Leinster",
"province_code": "",
"province_name": "",
"city_name": "Dublin",
"timezone": "Europe/Dublin"
}
未找到(私有)IP 地址(将返回 400 错误代码)
AddressNotFoundError: Address not found in database
速度
我能在我的机器上达到每秒 150k 的请求。
geoip-api 选择将整个数据库保留在内存中,而不是将其写入文件。由于它必须在继续为旧数据库提供服务的同时下载新数据库,因此请至少为这留出 512 MB 的内存。
用法
使用以下命令安装 geoip-api
cargo install geoip-api
如果您没有 cargo
,请使用以下命令安装它
curl https://sh.rustup.rs -sSf | sh
或 阅读教程 获取更多说明。
您可以通过命令行或环境变量指定选项,
USAGE:
geoip-api [OPTIONS] --account-id <account-id> --license-key <license-key>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
--account-id <account-id> [env: GEOIP_API_ACCOUNT_ID=]
--edition-id <edition-id> [env: GEOIP_API_EDITION_ID=] [default: GeoIP2-City]
--license-key <license-key> [env: GEOIP_API_LICENSE_KEY=]
-l, --listen-addr <listen-addr> [env: GEOIP_API_LISTEN_ADDR=] [default: 127.0.0.1:3000]
--update-minutes <update-minutes> [env: GEOIP_API_UPDATE_MINUTES=] [default: 30]
例如。
geoip-api =-account-id 123456 --license-key s3cretlicense --update-minutes 30
# or
export GEOIP_API_ACCOUNT_ID=123456
export GEOIP_API_LICENSE_KEY=s3cretlicense
geoip-api
许可证
本项目采用 Apache 许可证,版本 2.0
依赖项
~27–40MB
~712K SLoC