Etc/Test

ASP.NET Core HttpClientFactory

김컴맹 2023. 4. 7. 16:55
반응형

HttpClientFactory는 애플리케이션 전체에서 HttpClient 인스턴스를 관리하고 재사용할 수 있도록 해주는 기능입니다. HttpClientFactory를 사용하면 HttpClient를 생성, 구성 및 관리하는 작업을 보다 쉽게 수행할 수 있습니다. 또한 애플리케이션의 성능과 안정성을 향상시키는데 도움이 됩니다.

 

ASP.NET Core에서 HttpClientFactory를 사용하는 방법에 대한 간략한 설명과 예제 코드입니다.
1. HttpClientFactory를 사용하기 위해서는 먼저 NuGet 패키지인 Microsoft.Extensions.Http를 설치해야 합니다.
2. HttpClientFactory를 등록하기 위해 Startup.cs 파일에 다음과 같은 코드를 추가합니다.

public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpClient();
    // 또는
    services.AddHttpClient("myapi", c =>
    {
        c.BaseAddress = new Uri("https://api.example.com/");
        c.DefaultRequestHeaders.Add("User-Agent", "MyApp");
    });
}


위 코드는 HttpClientFactory를 등록하는 방법입니다. AddHttpClient() 메서드를 호출하면 기본 이름을 가진 HttpClient 인스턴스를 등록합니다. AddHttpClient() 메서드는 HttpClient 인스턴스를 구성하는 데 필요한 다양한 옵션을 제공합니다. AddHttpClient() 메서드의 매개변수로 이름을 지정하여 여러 개의 HttpClient 인스턴스를 등록할 수도 있습니다.

3. HttpClientFactory를 사용하여 HttpClient 인스턴스를 생성하고 사용합니다.

public class MyService
{
    private readonly IHttpClientFactory _clientFactory;

    public MyService(IHttpClientFactory clientFactory)
    {
        _clientFactory = clientFactory;
    }

    public async Task<string> GetAsync(string url)
    {
        var client = _clientFactory.CreateClient();
        var response = await client.GetAsync(url);
        return await response.Content.ReadAsStringAsync();
    }
}


위 코드는 IHttpClientFactory를 사용하여 HttpClient 인스턴스를 생성하는 방법입니다. MyService 클래스의 생성자에서 IHttpClientFactory를 주입받고, GetAsync() 메서드에서 IHttpClientFactory.CreateClient() 메서드를 호출하여 HttpClient 인스턴스를 생성합니다. 이후 HttpClient 인스턴스를 사용하여 HTTP 요청을 보내고, 응답을 처리합니다.

위 코드에서는 CreateClient() 메서드를 호출할 때 이름을 지정하지 않았기 때문에 기본 이름을 가진 HttpClient 인스턴스가 생성됩니다. 이름을 지정하여 등록된 HttpClient 인스턴스 중에서 원하는 인스턴스를 생성할 수도 있습니다.

이처럼 HttpClientFactory를 사용하면 HttpClient 인스턴스를 생성하고 관리하는 작업을 보다 쉽게 수행할 수 있으며, 애플리케이션의 성능과 안정성을 향상시키는데 도움이 됩니다.
따라서, HttpClientFactory는 ASP.NET Core 애플리케이션에서 HTTP 요청을 보내는 데 있어서 매우 유용한 기능입니다.

반응형

'Etc > Test' 카테고리의 다른 글

Unreal 시각화  (0) 2023.04.17
불확실성에 대한 인지 왜곡  (0) 2023.04.17
ASP.NET Core AddHttpClient<T>  (0) 2023.04.07
레이트레이싱(Ray Tracing)  (0) 2023.04.07
OCI Instance Run command의 Delivery State  (0) 2023.04.06