.NET 7 - Simplificando request Patch


   Hoje veremos um recurso do  .NET 7.0 que permite simplificar os requests Patch.

Até o .NET 6, era possível usar uma extensão fácil de usar em clientes HTTP para solicitações POST e PUT.

Era possível utilizar os métodos PostAsJsonAsync e PutAsJsonAsync que levavam uma URL e um objeto que o método serializaria para JSON sem intervenção do desenvolvedor.

Infelizmente, isso não estava disponível para os requests Patch.

No .NET 7 isso foi corrigido e agora temos disponível o método PathAsJsonAsync.

Anteriormente era necessário serializar o objeto passado no corpo da requisição instanciando um objeto do tipo StringContent que exigia três parâmetros:

  1. O objeto serializado em formato de texto, geralmente em JSON (o padrão)

  2. A codificação, geralmente UTF8

  3. O tipo de mídia, geralmente JSON (o padrão de uso)

Com isso geralmente teríamos um código da seguinte forma :

using System.Text;

using (HttpClient client = new HttpClient())

using (HttpResponseMessage response = await client.PatchAsync("http://exemplo.com",
    
new StringContent("{ \"Nome\" : \"Macoratti\" }", Encoding.UTF8, "application/json")))

using (HttpContent content = response.Content)
{
  
string result = await content.ReadAsStringAsync();
}
 

A partir do .NET 7 podemos usar o método PatchAsJsonAsync, que vai funcionar da mesma forma que os métodos PostAsJsonAsync e PutAsJsonAsync, encapsulando a serialização, e , com isso o código fica da seguinte forma:

using (HttpClient client = new HttpClient())

using (HttpResponseMessage response = await client.PatchAsJsonAsync("http://exemplo.com",
 
new { Nome = "Macoratti" }))

using
(HttpContent content = response.Content)
{
 
string result = await content.ReadAsStringAsync();
}

O que simplifica os requests usando Patch.

E estamos conversados.

"Porque pela graça sois salvos, por meio da fé; e isto não vem de vós, é dom de Deus.
Não vem das obras, para que ninguém se glorie;"
Efésios 2:8,9

Referências:


José Carlos Macoratti