Note
所有接口的 C# 示例都可以在 UApi 的接口文档页面,向下滚动至 快速启动 区块后直接复制。
dotnet add package uapi-sdk-csharpusing System;
using System.Collections.Generic;
using System.Threading.Tasks;
using uapi;
var client = new Client("https://uapis.cn", "YOUR_API_KEY");
try
{
var result = await client.Misc.getMiscHotboardAsync(new Dictionary<string, object?>
{
["type"] = "weibo",
["time"] = 0,
["keyword"] = "",
["time_start"] = 0,
["time_end"] = 0,
["limit"] = 0,
["sources"] = false
});
Console.WriteLine($"Response: {result}");
}
catch (UapiError ex)
{
Console.Error.WriteLine($"API call failed: {ex.Message}");
}
catch (Exception ex)
{
Console.Error.WriteLine($"Transport error: {ex.Message}");
}现在你不再需要反反复复的查阅文档了。
只需在 IDE 中键入 client.,所有核心模块——如 Social、Game、Image——即刻同步展现。进一步输入即可直接定位到 getSocialQqUserinfoAsync 这样的具体方法,其名称与文档的 operationId 严格保持一致,确保了开发过程的直观与高效。
所有方法签名只接受真实且必需的参数。当你在构建请求时,IDE 会即时提示 qq、username 等键名,这彻底杜绝了在 Dictionary<string, object?> 中因键名拼写错误而导致的运行时错误。
针对 401、404、429 等标准 HTTP 响应,SDK 已将其统一映射为具名的异常类型。这些异常均附带 Code、Status、Details 等关键上下文信息,确保你在日志中能第一时间准确、快速地诊断问题。
Client 基于 HttpClient,构造函数会设置 BaseAddress 并自动追加 Authorization 头;如果你想引入代理、超时或重试策略,只需包装一个自定义的 HttpClient 传入即可。
如果你需要查看字段细节或内部逻辑,仓库中的 ./internal 目录同步保留了由 openapi-generator 生成的完整结构体,随时可供参考。
每次请求完成后,SDK 会自动把响应 Header 解析成结构化的 ResponseMeta,你不用自己拆原始字符串。
成功时可以通过 client.LastResponseMeta 读取,失败时可以通过 e.Meta 读取,两条路径拿到的是同一套字段。
using System;
using System.Collections.Generic;
using uapi;
var client = new Client("https://uapis.cn", "YOUR_API_KEY");
// 成功路径
var result = await client.Social.getSocialQqUserinfoAsync(
new Dictionary<string, object?> { ["qq"] = "10001" }
);
var meta = client.LastResponseMeta;
if (meta != null) {
Console.WriteLine($"余额剩余: {meta.BalanceRemainingCents ?? 0} 分");
Console.WriteLine($"资源包剩余: {meta.QuotaRemainingCredits ?? 0} 积分");
Console.WriteLine($"Request ID: {meta.RequestId}");
}
// 失败路径
try {
await client.Social.getSocialQqUserinfoAsync(
new Dictionary<string, object?> { ["qq"] = "10001" }
);
} catch (UapiError e) {
if (e.Meta != null) {
Console.WriteLine($"限流,{e.Meta.RetryAfterSeconds ?? 0}s 后重试");
Console.WriteLine($"Request ID: {e.Meta.RequestId}");
}
}常用字段一览:
| 字段 | 说明 |
|---|---|
BalanceRemainingCents |
账户余额剩余(分) |
QuotaRemainingCredits |
资源包剩余积分 |
VisitorQuotaRemainingCredits |
访客配额剩余积分 |
RetryAfterSeconds |
触发限流后的建议等待时长 |
RequestId |
请求唯一 ID,排障时使用 |
DebitStatus |
本次计费状态 |
RateLimitPolicies / RateLimits |
完整结构化限流策略数据 |
| HTTP 状态码 | SDK 错误类型 | 附加信息 |
|---|---|---|
| 401/403 | UnauthorizedError |
code、status |
| 404 | NotFoundError / NoMatchError |
code、status |
| 400 | InvalidParameterError / InvalidParamsError |
code、status、details |
| 429 | ServiceBusyError |
code、status、retry_after_seconds |
| 5xx | InternalServerErrorError / ApiErrorError |
code、status、details |
| 其他 4xx | UapiError |
code、status、details |
访问 UApi文档首页 并选择任意接口,向下滚动到 快速启动 区块即可看到最新的 C# 示例代码。
