RestClient.Net

C# 中最安全的 REST 调用方式。基于函数式编程、类型安全和现代 .NET 模式从头构建。

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
// 构建失败直到处理所有情况

准备好开始了吗?

阅读文档 OpenAPI 生成器 MCP 服务器