.Net 5: System.Net.Http.Json Keşif Serisi #2

Erkan Güzelküçük
Devbase
Published in
2 min readNov 5, 2020

.Net 5 ilginç yeni özelliklerle karşımıza çıkıyor. System.Net.Http namespace’i hepimiz biliyoruz, System.Net.Http.Json ne yapıyor peki?

Bu fotoğraf Markus Spiske tarafından çekilmiştir.

Microsoft Documents sayfasında System.Net.Http.Json namespace’i için;

Provides extension methods for HttpClient and HttpContent that perform automatic serialization and deserialization using System.Text.Json.

Kısacası bu namespace System.Text.Json kullanarak otomatik serialization ve deserialization işlemi yaparak HttpClient ve HttpContent için bazı metodlar kullanıma sunar.

Microsoft, .Net 5 ile System.Text.Json için büyük yatırım yapıyor diyebilirim. Kalıcı bir özellik bunlar çünkü. Bir sonraki versiyonlarda bu özellikleri kaldırıyorum gibi şeyler duyacağımızı sanmıyorum.

System.Net.Http.Json’ın üç sınıfı bulunmakta. Bunları adım adım inceleyelim.

  • HttpClientJsonExtensions
  • HttpContentJsonExtensions
  • JsonContent

HttpClientJsonExtensions

Http içeriğini Json olarak göndermek veya almak için bazı metodlar üretiyor. Bu metodların tamamı Async. Bu metodlar; GetFromJsonAsync, PostAsJsonAsync ve PutAsJsonAsync.

GetFromJsonAsync

Bu metod ile belirtilen Uri’ye GET isteği gönderiliyor ve yanıt gövdesi Json olarak deserialize edilmiş olarak alınıyor.

PostAsJsonAsync

İsminden de anlaşılacağı üzere belirlediğiniz bir Uri’e Modelinizi herhangi bir serialize işlemine tabi tutmadan bu metod yardımıyla Post edebiliyorsunuz.

PutAsJsonAsync

PostAsJsonAsync ile kullanımı aynı şekildedir. Sadece Put yöntemi ile istek sağlıyor.

HttpContentJsonExtensions

Bu sınıf sadece bir metod içeriyor ve iki overloads’a sahip. ReadFromJsonAsync ve ReadFromJsonAsync<T>

ReadFromJsonAsync

Bu metod HTTP içeriğini okur ve içeriği Json olarak gelen gövdeyi Deserialize eder.

Eğer HttpClientJsonExtensions sınıfını kullanmayı tercih etmezseniz bu metod’u kullanmanız gerekir. GetFromJsonAsync ve ReadFromJsonAsync aynı şeyi yapıyor temelde aslında fakat ReadFromJsonAsync yönteminin HttpContent üzerinde geçerli olduğunu unutmamak gerekiyor.

JsonContent

Bu sınıf Json’a dayalı Http içeriği sağlar. JsonContent’i incelediğimizde HttpContent’ten türediğini görebiliriz.

public sealed class JsonContent : HttpContent

HttpContent’e ait tüm metodlar’ı JsonContent’te kullanabiliyor. Kendine ait sadece Create metodu mevcut. Anlık olarak bir Json isteği oluştuğunda bu sınıfı kullanabilirsiniz. En basit örneği SendAsync metodu için.

PatchAsJsonAsync gibi bir metod ile karşılaşmadım. Neden eklemediler bunu anlamadım! JsonContent bu eksik metod yerine tercih edilebilir.

.Net 5 gün geçtikçe farklı namespace’ler ile çıkabiliyor karşımıza. Bakalım bir sonraki keşfimiz hangi yeni namespace’e olacak :)

--

--

Erkan Güzelküçük
Devbase

Software Architecture and Research Applications Development Team Leader at Koç University