Result 类型
返回 Result<TSuccess, HttpError<TError>>,使用封闭层次类型实现编译时安全。不再猜测异常处理。
零异常
不抛出异常,实现可预测的错误处理。每种可能的结果都在类型系统中表示。
穷尽性检查
使用 Exhaustion 分析器保证编译时完整性。如果你没有处理所有情况,代码将无法编译。
HttpClient 扩展
与 IHttpClientFactory.CreateClient() 配合使用,实现正确的连接池和 DNS 行为处理。
OpenAPI 生成器
从 OpenAPI 3.x 规范生成类型安全的 C# 客户端。自动生成模型和 Result 类型别名。
MCP 服务器生成器
从 OpenAPI 规范为 Claude Code 生成模型上下文协议服务器。AI 就绪的 API 集成。
快速安装
dotnet add package RestClient.Net
基本用法
using RestClient.Net;
// 发起 GET 请求
var result = await httpClient
.GetAsync(
url: "https://api.example.com/posts/1".ToAbsoluteUrl(),
deserializeSuccess: DeserializePost,
deserializeError: DeserializeError
);
// 模式匹配结果 - 必须处理所有情况
var output = result switch
{
OkPost(var post) => $"成功: {post.Title}",
ErrorPost(ResponseErrorPost(var err, var status, _)) => $"错误 {status}",
ErrorPost(ExceptionErrorPost(var ex)) => $"异常: {ex.Message}",
};
为什么使用可辨识联合?
C# 尚未正式支持可辨识联合,但 RestClient.Net 今天就将这种强大的模式带入你的代码。配合 Exhaustion 分析器,遗漏任何情况都会导致编译失败。
不使用 Exhaustion
// 危险 - 编译通过但可能抛出异常
var output = result switch
{
OkPost(var post) => "成功",
ErrorPost(ResponseErrorPost(...)) => "错误",
// 遗漏了 ExceptionErrorPost!
// 运行时崩溃等着发生
};
使用 Exhaustion
// 安全 - 编译器报错!
// error EXHAUSTION001: Switch 不完整
// 遗漏: ExceptionErrorPost
// 构建失败直到处理所有情况