3.2创建构建器实例
创建于 2026 年 8 月 17 日约 4 分钟读完
HttpRequestBuilder 类型的构造函数被设计为私有,因此无法直接使用 new 关键字进行实例化。不过,它提供了多个静态方法来方便地创建 HttpRequestBuilder 的实例。
1. 使用请求谓词静态方法(推荐)
HttpRequestBuilder 提供了多种基于 HTTP 请求方法(如 GET、POST 等)的静态方法,用于快速创建实例,这些方法支持重载,以适应不同的参数需求。
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。
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> 委托传入谓词快捷方法(如 GetAsync、PostAsync 等)。它通过隐式转换自动将链式配置转换为委托,省去 builder => builder 的包裹。
// 传统方式: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 实例,省去手动调用各项配置方法的繁琐步骤。
// 解析最简 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 实例,省去手动链式调用的繁琐步骤。
// 解析最简 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字段提取器。