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://127.0.0.1:4242/ 并使用管理员 unleash4all 登录,然后在 https://127.0.0.1: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