#ip-address #ip #client-ip #api-client #api #api-bindings

ip-api-client

客户端(基于 ip-api.com API)允许您获取 IP 地址信息

7 个不稳定版本

0.5.1 2024 年 3 月 8 日
0.5.0 2024 年 3 月 8 日
0.4.2 2023 年 6 月 6 日
0.4.1 2022 年 12 月 3 日
0.2.0 2022 年 4 月 4 日

#1681网络编程

Download history 35/week @ 2024-03-29 10/week @ 2024-04-05

144 每月下载量

MIT 许可证

36KB
663

IP API 客户端

客户端(基于 ip-api.com API)允许您获取 IP 地址信息

用法

添加到项目

[dependencies]
ip-api-client = "0.5.1"
tokio = { version = "1.36.0", features = ["macros", "rt-multi-thread"], default-features = false }

编写一些 Rust 代码

use ip_api_client as Client;
use ip_api_client::{IpApiLanguage, IpData};

#[tokio::main]
async fn main() {
  // You can
  // `generate_empty_config` (to create your own config from scratch)
  // `generate_minimum_config` (that includes only important fields)
  // `generate_maximum_config` (that includes all fields)
  let ip_data: IpData = Client::generate_empty_config()
          // or `exclude_country` if this field is already included
          // in the generated config
          .include_country()
          // or `exclude_currency` if this field is already included in
          // the generated config
          .include_currency()
          // available languages: de/en (default)/es/fr/ja/pt-Br/ru/zh-CN
          .set_language(IpApiLanguage::De)
          // `make_request` takes
          // "ip"/"domain"/"empty string (if you want to request your ip)"
          .make_request("1.1.1.1")
          .await
          .unwrap();

  println!(
    "{}'s national currency is {}",
    ip_data.country.unwrap(),
    ip_data.currency.unwrap(),
  );

  // If you want to request more than one ip, you can use `make_batch_request`
  let ip_batch_data: Vec<IpData> = Client::generate_empty_config()
          .include_isp()
          // `make_batch_request` takes "IPv4"/"IPv6"
          .make_batch_request(vec!["1.1.1.1", "8.8.8.8"])
          .await
          .unwrap();

  println!(
    "1.1.1.1 belongs to `{}` and 8.8.8.8 belongs to `{}`",
    ip_batch_data.get(0).unwrap().isp.as_ref().unwrap(),
    ip_batch_data.get(1).unwrap().isp.as_ref().unwrap(),
  );
}

特性

开发进度

  • 使用配置结构请求 IP 地址信息,可以自定义请求中请求的字段以节省流量。
  • 获取不同语言中的 IP 信息
  • 在一个 HTTP 请求中查询多个 IP 地址。
  • 如果最后一个请求被限速,则阻塞所有请求直到达到限制。
  • 能够缓存所有响应,并在达到最大缓存大小时自动删除旧的 ip-data。

许可证

此库(ip-api-client)可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。

依赖项

~4.5–7MB
~122K SLoC