5.21启用请求分析工具
创建于 2026 年 8 月 17 日约 2 分钟读完
在现代化的浏览器中,通常内置了开发者工具,这些工具能够捕获并直观展示用户访问网站时的所有请求与响应数据。类似地,我们也为 HTTP 远程请求模块提供了一套分析工具。
HTTP 声明式请求通过 ProfilerAttribute 特性来启用请求分析工具。相应的 HTTP 声明式提取器实现为 ProfilerDeclarativeExtractor 类型,该类型负责解析 ProfilerAttribute 特性并构建 HttpRequestBuilder 实例所需的启用请求分析工具配置。
// 在接口定义上应用,影响所有方法[Profiler]public interface IHttpService : IHttpDeclarative{ // 在方法上应用 [Profiler] [Get("https://furion.net/")] Task<string> GetStringAsync(); [Profiler(false)] // 禁用请求分析工具 [Get("https://furion.net/")] Task<string> GetStringAsync();}启用后,当执行 HTTP 远程请求时,控制台将输出如下详细信息:
General: Request URL: https://furion.net/ Request Method: GET Status Code: 200 OK HTTP Version: 1.1 HTTP Content: Content Type: Declarative: System.Threading.Tasks.Task<System.String> GetStringAsync() | HttpAgent.Samples.IHttpService HttpClient Name: Request Duration (ms): 24.00Response Headers: Server: nginx/1.22.1 Date: Sun, 24 Nov 2024 16:48:50 GMT Connection: keep-alive Vary: Accept-Encoding ETag: "67426a3f-f366" Cache-Control: max-age=315360000 Accept-Ranges: bytes Content-Type: text/html Content-Length: 62310 Last-Modified: Sat, 23 Nov 2024 23:50:23 GMT Expires: Thu, 31 Dec 2037 23:55:55 GMT此外,除了为单个请求启用分析工具,还可以全局注册以在 HttpClient 中启用:
// 为默认客户端启用services.AddHttpClient(string.Empty) .AddProfilerDelegatingHandler();// 还可以提供条件禁用,例如生产环境中禁用services.AddHttpClient(string.Empty) .AddProfilerDelegatingHandler(disableIn: () => builder.Environment.EnvironmentName == "Production");services.AddHttpClient(string.Empty) .AddProfilerDelegatingHandler(disableInProduction: true);// 为特定客户端启用//services.AddHttpClient("weixin")// .AddProfilerDelegatingHandler();// 还可以一键为所有客户端配置启用services.ConfigureHttpClientDefaults(clientBuilder => clientBuilder.AddProfilerDelegatingHandler());// 或使用 IHttpRemoteBuilder 扩展方法进行一键配置services.AddHttpRemote() .ConfigureHttpClientDefaults(clientBuilder => clientBuilder.AddProfilerDelegatingHandler());通过启用请求分析工具,开发者能够更直观、便捷地观察和调试 HTTP 请求,从而提升开发效率与调试准确性。
ProfilerAttribute 包含以下构造函数和属性:
-
构造函数:
new():作用于方法或接口,启用请求分析工具。new(enabled):作用于方法或接口,设置是否启用请求分析工具。
-
属性:
Enabled:是否启用(bool类型),默认值为true(启用)。