16 个版本 (10 个重大更改)
| 0.11.0 | 2024年5月13日 | 
|---|---|
| 0.10.3 | 2024年3月18日 | 
| 0.10.1 | 2024年1月11日 | 
| 0.10.0 | 2023年11月1日 | 
| 0.3.0 | 2020年7月1日 | 
#396 in Web编程
每月下载量 173
用于 unleash-proxy
130KB
 3K  SLoC
Rustlang的Unleash API客户端
Unleash 是一个功能标志API系统。这是一个客户端,用于通过API控制Rust程序中的功能。
客户端概述
客户端使用异步Rust编写。用于与Unleash API通信,内置了surf或reqwest支持,或者用户可以提供任何实现了抽象实际客户端的thin trait的异步HTTP客户端。
异步-std (功能 'surf-client') 和 tokio (功能 'reqwest-client') 的示例在源树中的examples/中。有关更多功能信息,请参阅API文档。
要在同步程序中使用它,运行异步执行器并block_on()相关调用。由于客户端规范要求向API发送背景指标,您需要安排在示例examples/theads.rs中演示的线程中调用poll_for_updates方法。
包含了Unleash定义的策略,以支持自定义策略,请使用ClientBuilder并调用strategy方法来注册您的自定义策略缓存函数。
请参阅crates文档以获取更多详细信息。
配置
开始使用Client的最简单方法是使用ClientBuilder。提供了一个简单示例
let config = EnvironmentConfig::from_env()?;
let client = client::ClientBuilder::default()
    .interval(500)
    .into_client::<UserFeatures, reqwest::Client>(
        &config.api_url,
        &config.app_name,
        &config.instance_id,
        config.secret,
    )?;
client.register().await?;
into_client方法所需的值如下(按顺序,如上所示)
- api_url- 获取开关的服务器URL。
- app_name- 您应用程序的名称。
- instance_id- 一个唯一ID,理想情况下每个运行一个。这里可以选择由运行时生成的UUID。
- authorization- Unleash客户端密钥,如果设置,则作为授权标头发送。
尽管上面的代码显示了EnvironmentConfig的使用方法,但这不是必需的,而是作为一种方便地从系统环境变量中读取数据的方式提供。
| EnvironmentConfig 属性 | 环境变量 | 必需吗? | 
|---|---|---|
| api_url | UNLEASH_API_URL | 是 | 
| app_name | UNLEASH_APP_NAME | 是 | 
| instance_id | UNLEASH_INSTANCE_ID | 是 | 
| secret | UNLEASH_CLIENT_SECRET | 否 | 
请注意,如果您确实使用EnvironmentConfig作为访问系统变量的方式,您需要确保设置上述表格中标记为必需的所有环境变量,否则会引发panic。
ClientBuilder 还提供了一些假设有良好默认值且通常不需要更改的属性设置方法。如果您确实需要更改这些属性,可以在构建器上调用以下方法(如上所示,使用间隔)。
| 方法 | 参数 | 描述 | 默认 | 
|---|---|---|---|
| interval | u64 | 将轮询间隔设置为以毫秒为单位的 Unleash 服务器 | 15000ms | 
| disable_metric_submission | N/A | 关闭向 Unleash 提交指标 | 开启 | 
| enable_string_features | N/A | 默认情况下,Rust SDK 要求您定义一个枚举来解决问题,开启此功能将允许您通过字符串类型解决问题,通过使用 is_enabled_str方法。请注意,这是通过断言强制执行的,如果未开启此功能而调用is_enabled_str,则会导致panic | 关闭 | 
状态
核心 Unleash API 功能在 Rust 1.60 或更高版本中工作。此项目的 MSRV 限制较弱:当强制依赖项提高版本时,也将提高针对的最低版本,但如果较旧的 Rust 版本对用户有效,则不会阻止。特别是 time 已知会强制执行 6 个月的编译器年龄,因此预计会定期增加与测试的最低版本。
未实现 Unleash 指定的功能
- 在重启时,没有网络流量即可存活的本地序列化开关副本。
行为准则
请注意,该项目附带《贡献者行为准则》。通过参与此项目,您同意遵守其条款。
贡献
请按常规在 Github 上提交 PR。运行 Cargo test 运行测试套件,提交前使用 rustfmt 格式化代码。要运行功能测试套件,您需要一个用于执行 Unleash API。
例如,一种方法
docker-compose up -d
访问 https://:4242/ 并使用管理员 unleash4all 登录,然后在 https://:4242/admin/api/create-token 为用户管理员创建新的 API 令牌,类型为 Client。
然后运行测试套件
UNLEASH_API_URL=http://127.0.0.1:4242/api \
  UNLEASH_APP_NAME=fred UNLEASH_INSTANCE_ID=test \
  UNLEASH_CLIENT_SECRET="<tokenvalue>" \
  cargo test --features functional  -- --nocapture
或类似的。功能测试套件查找手动设置的特定功能集。例如,登录到端口 4242 上的 Unleash UI 并创建一个名为 default 的功能。
依赖关系
~3–18MB
~262K SLoC