跳到主要内容

az-aio-client

自动收集自 crates/api/az-aio-client/README.md

AIO Desktop 后端 HTTP 客户端,提供对 Shell 组件注册表和桌面状态 API 的同步调用封装。

功能

  • 类型安全的 AIO Desktop REST API 客户端,基于 reqwest::blocking
  • 可选的桌面会话令牌认证(x-aio-desktop-token header)
  • 完整的 Shell 组件管理接口:列表、获取、插入/更新(upsert)、局部修补(patch)、移除、配置保存、构建
  • 桌面后端状态查询(/api/desktop/status
  • 统一的 AioClientError 错误类型,区分传输层错误与 HTTP 状态错误

安装

Cargo.toml 中添加:

[dependencies]
az-aio-client = { path = "../az-aio-client" } # workspace 内部引用
# 或发布后:
# az-aio-client = "0.1" # crates.io 引用

用法

use az_aio_client::AioClient;

// 创建客户端(无需认证令牌)
let client = AioClient::new("http://localhost:9120");

// 或携带桌面会话令牌
let client = AioClient::with_desktop_token(
"http://localhost:9120",
"your-desktop-session-token",
);

// 查询桌面后端状态
let status = client.desktop_status()?;
println!("Desktop OK: {}", status.ok);

// 列出所有 Shell 组件
let registry = client.list_shell_components()?;
println!("共 {} 个组件", registry.components.len());

// 获取单个组件
if let Some(component) = client.get_shell_component("my-alias")? {
println!("组件预览: {}", component.preview);
}

依赖的 crates

  • az-config-center-contract — Shell 组件的共享数据类型
  • reqwest — HTTP 客户端(阻塞模式)
  • serde / serde_json — JSON 序列化与反序列化
  • thiserror — 错误类型派生
  • urlencoding — URL 路径编码(组件名称可能含特殊字符)