.Net Core Eğitimleri

11- ) Web Api Projesi 2. Kısım

Web Api 2. Kısım

Bu dersimizde web api projemizin diğer controller larını oluşturarak, auto history  alt yapısına loglama emrini verecek düzenlemeleri yapacağız. Geliştirdiğimiz web api projesini postman istemcisi ile test ederek güncellediğimiz ya da sildiğimiz kayıtların auto history ile nasıl saklandığına bakacağız.

Controllerlar

Öncelikle controllerlarımızın uygulayacağı interfacelerimizi oluşturacağız daha sonra controllerları oluşturarak içlerini düzenleyeceğiz. Adım adım aşağıdaki şekilde işlemleri yapalım ve projemize controllerlarımızı ekleyelim.

Bir önceki derste UserController’a giriş yapmış ve sadece kullanıcı ekleme işlemi gerçekleştirmiştik. Şimdi kullanıcı ile ilgili tüm işlemleri aşağıdaki şekilde kodlayacağız ancak onun öncesinde web api projemizin içine yeni bir klasör oluşturarak adına VM diyelim. Tam olarak view model olmasada burada kullanıcıdan veri almak için model tanımlamalarımızı yapacağız. Daha sonra bu klasöre sağ tıklayarak Add –> Class diyelim ve name alanına ChangePasswordModel yazarak kaydedelim.

ChangePasswordModel.cs dosyasına çift tıklayalım ve içeriğini aşağıdaki şekilde düzenleyelim. Ben 2 den fazla parametre almasını beklediğim metotlar için küçük modeller oluşturmayı ve bu modeller vasıtası ile parametreleri almayı tercih ediyorum.

Şimdi tekrar UserController.cs dosyamızı açalım içeriğini aşağıdaki şekilde düzenleyelim.

Bir önceki derste ekleme ve çift kayıt kontrolü yaptığımız LanguageControllerı da açalım ve aşağıdaki şekilde içeriğini güncelleyelim.

Şimdi sıra geldi bir önceki derste oluşturmadığımız controllerlarımıza. Önce bu controllerlar için interfaceler oluşturacağız. Bunun için Web api projemizin altında bulunan Interfaces klasörüne aşağıdaki interfaceleri ekleyelim ve içeriklerini düzenleyelim.

IAppResourceController.cs

IOrganizationController.cs

ICustomerController.cs

Arayüzleri oluşturduktan sonra controllerları oluşturabiliriz. Bunun için web api projemizin altında bulunan Controllers klasörüne aşağıdaki controller ları ekleyelim ve içeriklerini düzenleyelim.

AppResourceController.cs

OrganizationController.cs

CustomerController.cs

Şimdi sıra geldi AutoHistory kısmına. Daha önce projemize dahil edip çeşitli ayarlar yaptığımız autohistory alt yapısının çalışması için marşa basmamız gerekiyor. Şuana kadar altyapısını kurmuş olmamız her update ve delete sonrası autohistory tablosuna kayıt atılacağı anlamına gelmiyor. Kayıtların atılması için EnsureAutoHistory komutu ile tetiklememiz gerekiyor. Bunun için ben Unitofwork sınıfımın altında bulunan savechanges metodunu kullanmayı uygun gördüm. Böylece her seferinde bu komutu vermeme gerek kalmayacak zaten veritabanında bir kaydın değişebilmesi için unitofwork sınıfımın altında bulunan savechanges metodunun tetiklenmesi gerekiyor. Ancak siz her değişikliği değiş sadece istediğiniz değişiklikleri autohistory içinde saklamak isterseniz onun için ilgili yerlerde bu komutu vermelisiniz.

Common projemize Microsoft.EntityFrameworkCore.AutoHistory isimli nuget paketini dahil edelim. Daha önceki derslerimizde nuget paketlerinin nasıl projelere eklendiğini görmüştük. Paketi projeye dahil ettikten sonra UnitofWork.cs dosyamıza çift tıklayalım ve içeriğini aşağıdaki şekilde güncelleyelim.

Sonuç

Yukarıdaki işlemleri yaptığımızda artık projemiz içinde bulunan, örnek olması amacı ile eklediğimiz tüm entitylerimiz üzerinde CRUD işlemleri gerçekleştirilebilir olacak. Lütfen postman uygulaması ile controller lar üzerinde bulunan metodları test edin, update ve delete işlemleri yaptığınızda veritabanı üzerinde bulunan AutoHistory tablosuna kayıt atılıp atılmadığını gözlemleyin. İşlemleri doğru bir şekilde yaptı isek bir update ya da delete işlemi sonrasında AutoHistory tablosunda aşağıdaki gibi bir kayıt görmemiz gerekir.

{“before”:{“CreateDate”:”2018-09-28T16:50:05.1634515Z”,”Creator”:null,”MailAdress”:”mehmetalierol@windowslive.com”,”Name”:”Mehmet Ali”,”OrganizationId”:”b57c7cab-3eeb-436c-8515-934d9c9fd055″,”PasswordHash”:null,”Phone”:”5555 444 3322″,”Status”:1,”Surname”:”EROL”},”after”:{“CreateDate”:”2018-09-28T16:50:05.1634515Z”,”Creator”:null,”MailAdress”:”mehmetalierol@windowslive.com”,”Name”:”Mehmet Ali2″,”OrganizationId”:”b57c7cab-3eeb-436c-8515-934d9c9fd055″,”PasswordHash”:null,”Phone”:”5555 444 3322″,”Status”:1,”Surname”:”EROL2″}}

Projenin buraya kadar olan kısmı ile ilgili sorun yaşıyorsanız bu link ile github üzerinden projeyi indirebilir ve kendi yazdığınız kodlar ile karşılaştırabilirsiniz. Sorularınız için yorum kısmını kullanabilir ya da mail adresim üzerinde benimle iletişime geçebilirsiniz.
Mail Adresim : mehmetalierol@windowslive.com

<- Önceki Post – Sonraki Post ->

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir