Vicen Moreno

Pro Googler

Follow me on GitHub

HttpClientFactory de Asp.Net Core 2.1 (Tipos de Clientes)

netcore

Tipos de uso de HttpClientFactory

En mi post HttpClientFactory de Asp.Net Core 2.1 (Introducción) hablamos la incorporación de la factoría de clientes http en asp.net core. Las razones por las que el equipo de Microsoft a introducido esta factoría, la gran potencia que tiene y como empezar a utilizarla de forma básica. Seguimos con el tema y en este post vamos a hablar a cerca de los dos sabores que nos ofrece la factoría: Clientes con nombre(Named Clients) o clientes tipados(Typed Clients)

Clientes con nombre(Named Clients):

Es el tipo de cliente usado en el primer post de esta serie.

Con un cliente con nombre, podremos establecer ciertas caracteristicas para nuestros clientes en la ConfigureServices usando services.AddHttpClient() Gracias a que hemos nombrado nuestro cliente, podremos acceder a él en distintas partes de nuestro código usando su nombre y sus características vendrán con él. Evidentemente podremos registrar todos los clientes con nombre que queramos siempre y cuando su nombre sea único.

AddHttpClient recibe una string como primer argumento que servirá como identificador del cliente. El segundo argumento será una lambda con la configuración del cliente.

En las ubicaciones del código donde queramos utilizar este cliente, lo crearemos mediante inserción de dependencias solicitándolo a través de su identificador.

Un problema con estos clientes es la necesidad de usar magic strings para identificarlos. Reconocido esto como una mala práctica, podemos bordear el problema creando una clase estática con constantes con los nombres de nuestros clientes y luego usar esta clase para identificarlos.

Clientes tipados(Typed Clients):

Los clientes tipados nos permiten definir una clase que espera un HttpClient insertado en su constructor. Una vez que tenemos nuestra clase, podemos exponer el HttpClient directamente(cosa que no tiene mucho sentido) o encapsular el uso de HttpClient para que toda la lógica relacionada con él esté en un mismo lugar.

En este ejemplo defino el cliente mediante HttpClient y le asigno un tipo MyGitHubClient

En este otro, expongo la clase MyGitHubClient

Recibe un HttpClient en su constructor mediante DI y encapsula un endpoint de dicho HttpClient en un método.

En este controlador usamos nuestra clase MyGitHubClient

Recibimos una instancia de dicha clase mediante DI(No tenemos que hacer nada ya que viene gracias a AddHttpClient) y usamos el método que expusimos en ella.

Docu Microsoft


 Anterior      Posterior

Por Vicente José Moreno Escobar el 7 de marzo de 2019
Archivado en: ASP.NET-Core



Puedes disfrutar de otros artículos como éste en el archivo del sitio.