Normalde HttpRequest işleminde Tarayıcıya default Xml Fiddler'da ise Json döner App_Start/WebApiConfig.cs'e config.Formatter kodunu ekleyerek default dönecek tipi seçebiliriz public static class WebApiConfig { public static void Register(HttpConfiguration config) { . . . config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); //FrontEnd Developerlar genelde camelCase kullanır Json formatında IsPopular değil de isPopular şekl. dönmesini sağlar. } }
Web Api Authorization İşlemleri
Authorization bizim rolleme mekanizması kurmamızı sağlar yani hangi tip kullanıcı hangi isteklere erişebilsin gibi kontrolleri sağllar.Biz daha önce Database'imizde Users tablomuzda 2 kullanıcı oluşturup Role Sütununa birine U (User) diğerine A (Admin) değişkenlerini tanımlamıştık I.Daha önce oturum işlemleri için [Authorize] attribute'unu kulllanmıştık, Rolleme yapmak için kendi Authorize attribute'unu kendim yazmam gerekiyor yani bir CustomAuthorize yazacağız.... Okumaya Devam et →
Web Api Authentication işlemleri
Her kullanıcıya özel bir secret key (APIKey) vererek, servisime gelen isteği yapan kullanıcıda, benim belirlediğim key var ise (yani benim veri tabanımda o kullanıcı var ise) istek cevaplansın yoksa unauthorized dönsün şeklinde oturum kontrolü yapmak istiyoruz. Authentication : Kullanıcı başarılı bir şekilde giriş yapmış mı?Authorization : Giriş yapan kullanıcın haklarıApikey : Secret Key I. Authorize... Okumaya Devam et →
Web Api ExceptionFilterAttribute Kullanımı
Try catch blokları ile yaptığımız işlem kullanışlı değil yani her method için gelerek Try Catch bloğu yazmak istemeyiz. API'de hata geldiği zaman bunu tek bir noktadan yönetmek istiyoruz. I. Project SağTık>Add>Folder : Attributes ismini verdik > Bu klasör içerisine ApiExceptionAttribute.cs ismine class ekledik, Bu class'ı ExceptionFilterAttribute class'ından miras alıyoruz. Bu class'taki OnException methodunu override ettik.... Okumaya Devam et →
Web Api de Hata Yönetimi
Biz projeyi yazarken hata almasak da front end developer ya da kullanıcı bazı hatalar alabilir. Eğer oluşabilecek hataların nedenini projede döndürmediysek front end developer'a ya da diğer kullanıcılara çok genel bir hata olan 500 Internal Server hatası döner. Bu bazen sıfıra bölünme hatası da olabilir, sql bağlantı hatası da olabilir. Spesifik olarak hata tipini de... Okumaya Devam et →
Web Api Routing
Projemizdeki url'lere şekil vermemizi sağlar. App_Start/WebApiConfig dosyamızda default olarak api/{controller}/{id} şeklindedir. Controller ve Id, değişken olduğı için süslü parantez içerisinde. Buradaki herhangi bir şeyi değiştirebiliriz örn api yerine services yazarsak domain/services/cont şekl. çalışırAyrıca aynı yerde defaults: new {id=RouteParameter.Optional} //Yani id opsiyonel, isteğe bağlıdır diyor CRUD işlemleri için örneğin method ismi Get ya da GetLanguages vs... Okumaya Devam et →
Web Api Scaffolding Kullanımı
Scaffolding CRUD işlemlerini otomatik olarak kodlarını oluşturmamızı sağlayan bir araçtır. Örneğimizde Langugages tablosu mevcuttu ve biz buna manuel olarak CRUD işlemlerini yazmıştık şimdi Sql'e gidip başka bir tablo oluşturalım ve bu sefer CRUD işlemlerini scaffolding kullanarak yapalım. SqlServer'a girdik Users isminde tablo oluşturduk UserId-int-PrimaryKey, UserKey-uniqueidentifier-Default Value or Binding:(newid()), Name- Nvarchar(50), Role-Nvarchar(50) olarak satıları yaptık. UserKey'deki... Okumaya Devam et →
Wep API IHttpActionResult Interface ini Kullanma
Daha önce Status Code OK döndürmek için Request.CreateResponse(HttpStatusCode.Ok, languages) diye yazıyorduk bunu IHttpActionResult kullanarak Ok(languages) şeklindnde çok kısa bir biçimde yapabiliriz Aynı şekilde return Request.CreateResponse(HttpStatusCode.NotFound) şeklinde yazıyorduk NotFound(); yazarak yine kısaltabiliriz Controllerda ilgili methodumuza gittik önceden methoda HttpResponseMessage tipinde diyip Request.CreateResponse(HttpStatusCode.Ok) diye uzun uzun yazıyorduk şimdi methoda IHttpActionResult tipinde değer dönecek diyip direk Ok(languages) şeklinde... Okumaya Devam et →
Wep API Put ve Delete Metotlarının Standartlaştırılması
Put ve delete methodlarında kullanıcıdan bize bir id geliyor fakat id'ye ait kayıt var mı yok mu onu kontrol etmemiz gerekli, bunun yanısıra kayıt var fakat kullanıcıdan gelen model validasyon kurallarına uygun mu onu da kontrol etmeliyiz I. Gelen Id'ye ait bir data var mı yok mu onu kontrol etmek için TblLanguagesDAL'a gidip methodumuzu yazdık... Okumaya Devam et →
Web Api Post Metodunu Standart Hale Getirme Ve Validation İşlemleri
I. Controllerdaki Create methodumuzdaki dönüş tipini yine HttpResponseMessage yaptık ve Created status code'u ile language object'imizi (kullanıcıdan girdi olarak aldığımız object) döndürdük public HttpResponseMessage Post(TblLanguages language) { var createdLanguage = _tbllanguagesDAL.CreateLanguage(language); return Request.CreateResponse(HttpStatusCode.Created, createdLanguage); } II. Validation Control yaparsak örneğin yıl alanı zorunlu olsun bunun için öncelikle EntityFramework'ün oluşturduğu TblLanguages'a gidip yıl alanına Required ekledik... Okumaya Devam et →
