LoginSignup
3
3

More than 3 years have passed since last update.

ASP.NET Core の IHttpClientFactory を使ったときに直接 HttpClient を DI したら何が渡されてくるのか

Last updated at Posted at 2020-09-08

IHttpClientFactory のドキュメントを見ると IHttpClientFactory を受け取って CreateClient をするか、型指定されたクライアント機能を使って HttpClient を受け取るかという方法が書いてあるのですが、型指定されていない普通のクラスで HttpClient を DI してもらったらどうなるのか?というのが明示的に書いてないようなので調べてみました。(書いてあったらごめんなさい)

答えは以下のコードにありました。

IServiceCollection に対して AddHttpClient をすると、内部で HttpClient も登録されていて IHttpClientFactory の CreateClient(string.Empty) をした結果のインスタンスがわたってくるみたいです。

HttpClientFactoryServiceCollectionExtensions.cs
// Register default client as HttpClient
services.TryAddTransient(s =>
{
    return s.GetRequiredService<IHttpClientFactory>().CreateClient(string.Empty);
});

なので IHttpClientFactory を受け取って CreateClient するだけなら直接 HttpClient を受け取るようにしてしまってもよさそうですね。

ふぅ、すっきり。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3