7个不稳定版本
0.6.1 | 2024年4月19日 |
---|---|
0.5.2 | 2023年8月25日 |
0.5.1 | 2023年6月15日 |
0.4.0 | 2022年12月19日 |
0.3.0 | 2022年10月6日 |
#63 在 HTTP客户端
每月91次下载
425KB
9K SLoC
Infobip API Rust SDK
使用纯Rust调用Infobip API的客户端SDK。
此crate使您能够使用多个Infobip通信渠道,如短信、双因素认证、WhatsApp、电子邮件等。它抽象了所需的HTTP调用、模型和验证有效负载以及模型错误。模块结构按通信渠道划分。
📡 支持的渠道
目前,我们支持以下渠道
未来还将添加更多渠道!
🔐 认证
要使用此库,您需要设置一个Infobip账户。然后,您可以使用您的API密钥和自定义基本URL调用端点。您可以使用Configuration::from_env_api_key()
方法从环境加载配置。为此,设置IB_API_KEY
和IB_BASE_URL
变量。
📦 安装
要在您的项目根目录下安装库,请运行以下命令
cargo add infobip_sdk
或者,您可以将依赖项添加到项目的Cargo.toml
[dependencies]
infobip_sdk = "<version>"
将<version>
替换为库的最新(或所需的)版本。例如0.5.0
。
🚀 使用
要使用此库,请导入客户端和特定通道的模型。然后创建一个客户端并调用相关函数。例如,要发送短信,可以这样做
use infobip_sdk::model::sms::{Destination, Message, SendRequestBody};
use infobip_sdk::api::sms::SmsClient;
use infobip_sdk::configuration::Configuration;
#[tokio::main]
async fn main() {
// Build SMS client with configuration from the environment.
let sms_client = SmsClient::with_configuration(
// Load IB_API_KEY and IB_BASE_URL environment variables.
Configuration::from_env_api_key().unwrap()
);
// Create a message.
let message = Message{
destinations: Some(vec![Destination::new("123456789012")]),
text: Some("Your message text".to_string()),
..Default::default()
};
// Create the SendRequestBody instance.
let request_body = SendRequestBody::new(vec![message]);
// Send the SMS.
let response = sms_client.send(request_body).await.unwrap();
// Do what you want with the response.
assert_eq!(response.status, reqwest::StatusCode::OK);
println!("Response body:\n{}", serde_json::to_string(&response.body).unwrap());
}
👀 示例
学习如何使用库的最佳方式是查看官方 docs.rs 文档,其中包含如何使用每个端点的简单示例。您还可以查看 测试 目录下的集成测试,它们在实际场景中的使用方式类似。
🗒 注意事项
构建有效负载模型
表示模型的结构体具有公共字段,因此您可以使用提供的 new()
函数、使用 serde_json::from_str()
或使用真正的构造函数来构建它们。例如,要构建一个 Message
实例,您可以这样做
let message = Message{
destinations: Some(vec![Destination::new("123456789012")]),
text: Some("Your message text".to_string()),
..Default::default()
}
或者这样
let message: Message = serde_json::from_str(
r#"
{
"destinations": [
{
"to": "123456789012"
}
],
"text": "Your message text"
}
"#,
)
.unwrap();
或者这样
let destination = Destination {
message_id: None,
to: "41793026727".to_string()
};
let message = Message {
destinations: Some(vec![destination]),
..Default::default()
};
模型验证
一些模型有必填字段。可选字段被包装在 Option
枚举中。模型还包含额外的检查,以确保字段具有有效的值(如果可能的话)。当调用端点时,验证会自动执行,或者您可以调用模型的 .validate()
方法。
使用特性
您可以通过仅将所需通道作为库特性来加快编译时间。例如,要仅构建短信,添加依赖项如下
infobip_sdk = { version = "0.5", features = ["sms"] }
您可以在项目的 Cargo.toml 中查看特性列表的完整列表。特性名称遵循通道名称。
🧡 贡献
如果您想帮助本项目改进,请查看我们的 贡献指南 和 行为准则。
⚖️ 许可证
此项目可根据您的选择使用以下任一许可证
- Apache 许可证 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖项
~9–25MB
~407K SLoC