ASPNET .NetCore Api Response NamingStrategy Belirlenmesi

0 349

Öncelikle Naming Conventions konusuna kısaca değinmek istiyorum.  Glabol düzeyde farklı insanların aynı veya birbirine yakın işleri yaptığı her platform için çeşitli standartlar belirlenmiştir. Yazılım dünyasında da kod standartları oldukça önemlidir, Microsoft teknolojileriyle yazılım geliştiriyorsanız ilk olarak Microsoft naming conventions  makalesini incelemenizde fayda var.

 

Bu makalemizde API üzerinden  response çıktılara global düzeyde müdahale edip çeşitli standartları veya kendi standartlarımızı uygulamayı örnekleyeceğiz.

Neye ihtiyacımız var ?

ASPNET .NetCore 3.0 üzerinden çalışan JSON API

Senaryo

Öğrenci bilgilerinin API response alınması ve kontrol edilmesi

Model ;

 

Başlayalım..

Öncelikle Startup.cs içerisinde bazı Configuration ayarlarını yapmamız gerekiyor. Aslında bahsettiğim configuration bir ContractResolver belirlenmesi. JSON Serialize işleminde kullanılacak resolver’ı API  tanıtalım.

.Net Core 3.0 öncesinde SerializerSettings için AddJsonOptions kullanılırken NetCore 3.0 ile birlikte AddNewtonsoftJson  methodunu kullanmamız gerekecek.
( Where did AddJsonOptions go in .NetCore 3.0 )

Nuget üzerinden  Microsoft.AspNetCore.Mvc.NewtonsoftJson paketini  yükleyelim veya .csproj dosyası içersinde aşağıdaki kodu eklememiz yeterli olacaktır.

Startup.cs içersinde ConfigureServices methodunda JsonNet.Serialization lardan CamelCase’i set ediyoruz.  Defult olarak tanımlı NamingStrategy sınıflarına Newtonsoft.Json.Serialization altından erişebilirsiniz.

Response üzerinde property isimlerninin camelCase kullanıldığını görebilirsiniz.

Custom NamingStrategy

Bazı durumlarda isimlendirme standartlarını kendiniz belirlemek istersiniz veya stabil bir standartlara zorlanabiliriz. Bu tarz durumlar için bazı özelleştirmeler yapılmalı.

Örneklendirme için   _{PropName}_   şeklinde bir standartlandırmaya zorlandığımızı düşünelim.

Standart isimlendirme sınıflarını kontrol ettiğimizde (örn. CamelCaseNamingStrategy) NamingStrategy abstract sınıfı base aldığını görüyoruz.  Abstract methodunu override edip base methodu eziyoruz

 

Son olarak Startup.cs içerisindeki ConfigurationSerrvices methodumuzda set edilen ContractResolver’ın NamingStrategy özelliğini set edelim.

 

 

Output

 

 

Yorum yaz

Email adresiniz yayınlanmayacaktır.