3.2创建构建器实例

创建于 2026 年 8 月 17 日约 4 分钟读完

HttpRequestBuilder 类型的构造函数被设计为私有,因此无法直接使用 new 关键字进行实例化。不过,它提供了多个静态方法来方便地创建 HttpRequestBuilder 的实例。

1. 使用请求谓词静态方法(推荐)

HttpRequestBuilder 提供了多种基于 HTTP 请求方法(如 GETPOST 等)的静态方法,用于快速创建实例,这些方法支持重载,以适应不同的参数需求。

cs
var httpRequestBuilder = HttpRequestBuilder.Get("https://furion.net/"); // GET 请求,支持多个重载var httpRequestBuilder = HttpRequestBuilder.Put("https://furion.net/"); // PUT 请求,支持多个重载var httpRequestBuilder = HttpRequestBuilder.Post("https://furion.net/"); // POST 请求,支持多个重载var httpRequestBuilder = HttpRequestBuilder.Delete("https://furion.net/"); // DELETE 请求,支持多个重载var httpRequestBuilder = HttpRequestBuilder.Options("https://furion.net/"); // OPTIONS 请求,支持多个重载var httpRequestBuilder = HttpRequestBuilder.Trace("https://furion.net/"); // TRACE 请求,支持多个重载var httpRequestBuilder = HttpRequestBuilder.Patch("https://furion.net/"); // PATCH 请求,支持多个重载var httpRequestBuilder = HttpRequestBuilder.Query("https://furion.net/"); // QUERY 请求,支持多个重载

2. 使用 Create 静态方法

Create 方法允许通过更灵活的方式创建 HttpRequestBuilder 实例,支持直接指定请求方法和 URL,或使用自定义 HttpMethod

cs
var httpRequestBuilder = HttpRequestBuilder.Create("GET", "https://furion.net/");var httpRequestBuilder = HttpRequestBuilder.Create(HttpMethod.Get, "https://furion.net/");// 自定义请求谓词,如 CONNECT 请求var httpRequestBuilder = HttpRequestBuilder.Create("Connect", "https://furion.net/");

3. 使用 Setup 静态属性

Setup 返回一个空白 HttpRequestBuilder 构建器实例,专门用于配置 HttpRequestBuilder 并作为 Action<HttpRequestBuilder> 委托传入谓词快捷方法(如 GetAsyncPostAsync 等)。它通过隐式转换自动将链式配置转换为委托,省去 builder => builder 的包裹

cs
// 传统方式:builder => builderawait httpRemoteService.GetAsync("https://furion.net/", builder => builder.UseETag().Profiler());// ✅ 使用 Setup 替代await httpRemoteService.GetAsync("https://furion.net/", HttpRequestBuilder.Setup.UseETag().Profiler());

4. 使用 FromCurl 静态方法

通过传入原生的 cURL 命令字符串,FromCurl 可以一键生成配置好的 HttpRequestBuilder 实例,省去手动调用各项配置方法的繁琐步骤。

cs
// 解析最简 cURL 命令,自动识别 GET 方法var httpRequestBuilder = HttpRequestBuilder.FromCurl("curl http://example.com");// 解析带请求体(-d)的命令,自动推断为 POSTvar httpRequestBuilder = HttpRequestBuilder.FromCurl(    "curl -X POST https://api.furion.net/data -H \"Content-Type: application/json\" -d '{\"name\":\"John\"}'");
  • curlCommand:完整的 cURL 命令字符串,必须以 curl 开头。
  • configure:可选委托,用于注册自定义的标志提取器。

5. 使用 FromJson 静态方法

通过传入 JSON 配置字符串,FromJson 可以一键生成配置好的 HttpRequestBuilder 实例,省去手动链式调用的繁琐步骤。

cs
// 解析最简 JSON 配置,自动识别 GET 方法var httpRequestBuilder = HttpRequestBuilder.FromJson("""    {        "url":"http://example.com",        "method":"GET"    }    """);// 解析带请求体的 JSON 配置,自动推断为 POSTvar httpRequestBuilder = HttpRequestBuilder.FromJson("""    {        "url": "https://api.furion.net/data",        "method": "POST",        "headers": {            "Content-Type": "application/json"        },        "data": {            "name": "John"        }    }    """);
  • json:完整的 JSON 配置字符串,必须是 JSON 对象(以 { 开头且以 } 结尾),属性名不区分大小写且允许尾随逗号。
  • configure:可选委托,用于注册自定义的 JSON 字段提取器。