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 在 网络编程
144 每月下载量
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(),
);
}
特性
- 我们使用
as_field
而不是as
(如 ip-api.com API 文档 中所述),因为它在 Rust 中是一个 严格关键字,例如pub
、impl
或struct
。
开发进度
- 使用配置结构请求 IP 地址信息,可以自定义请求中请求的字段以节省流量。
- 获取不同语言中的 IP 信息
- 在一个 HTTP 请求中查询多个 IP 地址。
- 如果最后一个请求被限速,则阻塞所有请求直到达到限制。
- 能够缓存所有响应,并在达到最大缓存大小时自动删除旧的 ip-data。
许可证
此库(ip-api-client)可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。
依赖项
~4.5–7MB
~122K SLoC