ASP.NET Core HttpClient正确使用方法之系列一

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

该文章主要介绍了HttpClient类的使用方法,包括默认方式、命名方式和类型化方式声明HttpClient,以及使用HttpClient集成第三方REST API库Refit的方法。文章提供了详细的代码示例和运行结果。

🔎

延伸解读

三种声明方式的核心差异

文章介绍了默认、命名和类型化三种HttpClient声明方式。默认方式通过IHttpClientFactory创建未配置的客户端;命名方式在注册时预设BaseAddress和请求头,调用时只需传递子路径;类型化方式将HttpClient封装到服务类中,无需字符串命名,直接注入使用。选择时需权衡配置复用性与调用简洁性。

命名与类型化方式的适用场景

命名方式适合为不同接口配置不同的HttpClient,例如为GitHub API设置特定的BaseAddress和Header。类型化方式则进一步将请求逻辑封装到服务类中,如GitHubService,使控制器代码更简洁。当需要为同一API进行多处配置或封装复杂请求时,类型化方式更利于维护。

集成Refit简化API调用

文章演示了通过Refit.HttpClientFactory包集成Refit库。定义IGitHubClient接口并配置RefitClient后,即可像调用本地方法一样发起HTTP请求,无需手动构造HttpRequestMessage和处理响应。这减少了样板代码,但需注意引入第三方库的依赖管理。

❓

Q&A

ASP.NET Core 中 HttpClient 默认方式怎么用?

在 Program.cs 中调用 AddHttpClient 方法注册 IHttpClientFactory,然后在控制器构造函数中注入 IHttpClientFactory,通过 CreateClient() 创建 HttpClient 实例,再使用 SendAsync 发送请求。

命名方式声明 HttpClient 有什么好处?

可以为不同的接口配置不同的 HttpClient 实例,例如设置不同的 BaseAddress 和请求头,便于针对多个 API 进行独立配置。

类型化方式声明 HttpClient 和命名方式有什么区别?

类型化方式不需要使用字符串命名,而是直接创建一个服务类(如 GitHubService)来封装 HttpClient 的配置和请求方法,通过依赖注入使用该服务类。

如何在 ASP.NET Core 中集成 Refit 库来调用 REST API?

首先引用 Refit.HttpClientFactory 包,然后定义一个接口(如 IGitHubClient)并使用 Refit 特性标注,接着在启动项中配置 RefitClient,最后在控制器中注入该接口并调用方法。

HttpClient 在 ASP.NET Core 中主要用来做什么?

HttpClient 用于从 URI 标识的资源发送 HTTP 请求和接收 HTTP 响应,常用于 WebAPI 资源请求和处理。

使用 IHttpClientFactory 创建 HttpClient 的步骤是什么?

在 Program.cs 中调用 AddHttpClient 注册 IHttpClientFactory,然后在需要的地方注入 IHttpClientFactory,调用 CreateClient() 方法创建 HttpClient 实例。

🏷️

标签

➡️

继续阅读