这个项目能做什么
Soenneker.Copper.OpenApiClientUtil 是一个 .NET 库,它基于配置好的 Copper HTTP 提供程序,提供一个延迟创建且可复用的 Kiota 生成的 Copper API 客户端。
功能特性
- 公开了一个 `ICopperOpenApiClientUtil` 抽象,其 `Get` 方法在实用程序的生命周期内仅初始化一次客户端;并发调用者将共享该初始化过程并接收相同的客户端实例。
- 位于 Copper HTTP 包之上,该包负责发送 Copper 所需的标头:`X-PW-AccessToken`、`X-PW-Application` 和 `X-PW-UserEmail`。
- 配置从 `Copper` 部分读取(例如令牌所有者的 `ApiKey` 和 `Email`),底层包还支持 `Copper:ClientBaseUrl`、`Copper:Application`、`Copper:AuthHeaderName` 和 `Copper:AuthHeaderValueTemplate`。
安装与注册
通过 `dotnet add package Soenneker.Copper.OpenApiClientUtil` 进行安装。提供两个 DI 注册器:`AddCopperOpenApiClientUtilAsSingleton()` 用于单个共享客户端,以及 `AddCopperOpenApiClientUtilAsScoped()` 用于每个应用程序范围缓存自己的生成客户端,同时仍共享单例 HTTP 提供程序。
典型用法
消费者类注入 `ICopperOpenApiClientUtil`,等待 `clientUtil.Get(cancellationToken)`,然后调用生成的端点方法,例如 `client.Account.GetAsync(...)`。
已知注意事项
- 配置在底层 HTTP 客户端首次创建时被捕获,因此凭据或基础 URL 的更改需要重新创建服务生命周期。
- 释放 scoped 实用程序会释放其生成的客户端引用,而不会移除共享的 `HttpClient`;HTTP 提供程序在应用程序容器关闭时才会释放该客户端。
- 某些生成的端点将 JSON 作为 `string?` 返回,因为源 Postman 集合缺乏强响应架构。
- API 密钥、令牌所有者电子邮件和 Copper 身份验证标头应在日志和跟踪中进行脱敏处理。
范围
该存储库是一个轻量级的客户端包装器,而非完整的 CRM 应用程序:它提供客户端创建和生命周期管理,而 API 覆盖范围和响应形状由生成的 Copper 客户端定义。
评论
0 评分人数达到10人后显示
登录后参与讨论。