Merhaba yazımızda SharePoint/Office365 üzerinde web servislerini kullanarak OData kullanımı hakkında temel bilgileri göreceğiz. OData (Açık veri Protokolü) Rest alt yapısını kullanarak http çekirdek protokolü üzerine inşaa edilmiş bir veri erişim protokolüdür. Klasik c# / Asp.net veya Vb.net üzerinde OData kullanımına ek olarak SharePoint / Office365 sistemleri üzerinde OData erişimlerine göz atalım.
Data İsteği ( GET)
OData servisleri http Get methodu üzerinden data erişimi sağlayabilirler.
GET /_vti_bin/listdata.svc/Vehicles
Spesifik data döndürme
GET /_vti_bin/listdata.svc/Vehicles(3) bu sorgumuzda ID’si 3 olan kaydımızı ekrana getirmekteyiz. Data yapınıza göre Primary Key olarak tanımladığınız kolona parantezler içine yazmak şartı ile aslında normalde bildiğimiz SQL komutlarından “Select * from Vehicles where ID = 3” sorgusunu çalıştırmış bulunuyoruz.
Kolon İsmine Göre Veri geri döndürme
GET _vti_bin/listdata.svc/Vehicles(3)/Title URL’mize 3 numaralı ID ye ait kayıt seti için Title verisinin değerini geri döndürmesini istedik. Eğer kolonumuz bir Lookup kolon ise ek özellik olarak /Vehicles(3)/Location/Address/PostalCode …. Şekliden lookup tablolara da erişebiliriz.
Kolon İsmine Göre Ham (Salt) veri Döndürme
Bir özelliğin yada kolonun xml’den bağımsız değerini döndürmek için $value etiketi url’ye eklenmelidir.Örn :
Get /_vti_bin/listdata.svc/Vehicles(3)/Title/$value
Sorgular ve Flitrelemeler
$FILTER
OData birden fazla sorgu seçeneğini $filter key’i vasıtası ile sorgulamamıza izin verir. Bunlardan temel olarak;
İki Aralık Arası | Filter=Id gt 1 and Id lt 4 lt= Less than gt = Greater Than |
1 den büyük 4 den küçük |
And | Filter = title eq ‘Honda’ and title eq ‘mercedes’ | Mercedes ve Honda olan kayıtlar |
Or | filter= Title eq ‘Honda’ or Title eq ‘Kia’ | Honda yada Kia olan kayıtlar |
Less than ( n değerinden küçük) | Filter=ID lt 4 | ID’si 4’den küçük kayıtlar |
Greater than (n değerinden büyük) | Filter=ID gt 4 | ID’si 4’den Büyük kayıtlar |
Greater than or equal to (n değerinden büyük ve n değere eşit kayıtlar) |
Filter=ID ge 4 | ID’si 4’den Büyük ve 4’e eşit kayıtlar |
Less than or equal to (n değerinden küçük ve n değere eşit kayıtlar) | Filter=ID le 4 | ID’si 4’den Küçük ve 4’e eşit kayıtlar |
Different from (not equal) (Verilen n değerine eşit olmayan ) |
Filter=ID ne 4 | ID’si 4’e eşit olmayan kayıtlar |
Endswith (n değerin sonu x değerle biten kayıtlar) | filter=endswith(Title,’da’) | Title kolonunun sonu da harfleri ile biten kayıtlar |
startswith | filter=startswith(Title, ‘S’) | Title kolonunun başı ‘s’ harfi ile başlayan kayıtlar |
substringof | filter=substringof(‘ond’, Title) | Title içerisinde and geçen kayıtlar örn( Honda ) |
Yukarıda görülen tablo aslında en sık kullandığımız işlemlerin OData $filter sorgularında kullanılan şekilleridir. Daha fazla bilgi ve detay için lütfen https://msdn.microsoft.com/en-us/library/hh169248(v=nav.71).aspx adresini ziyaret ederek diğer $filter seçeneklerini de inceleyiniz.
$OrderBy
Orderby seçeneği verilmediği taktirde kayıtlarımız default “asc” olarak sıralanmaktadır. Sorgularımızda $orderby belirtmek sorgularımızın daha net okunabilirliğini sağlayacağından yazılması tavsiye edilir.
$top ve $skip
$top bildiğimiz manası ile sql cümlesinde “select top(2)” kullanımını eş değer OData sorgu cümleciğidir. $skip ise son zamanlarda linq ile aşına olduğumuz .Take(5).Skip(2); kullanımını eş değer OData sorgu cümleciğidir.
GET /_vti_bin/listdata.svc/Vehicles?$top=4&$skip=1
$count
Listemizdeki toplam kayıt sayısını döndürmek için kullandığımız OData sorgu cümleciğidir.
GET /_vti_bin/listdata.svc/Vehicles/$count
Response : 3
$expand
Listemizdeki lookupların genişlemesini ve tüm verinin çekilmesi için kullanılır. Örneklemek gerekirse entity’ye bağlı virtual classları çekmektir. Linq daki Include() öğesine eşdeğerdir.
$select
Çok fazla kolon olan listelerimizden özel sorgular oluşturmak için kullanabileceğimiz ve istediğimiz fieldları geri döndürebileceğimiz bir sorgu cümleciğidir.
GET /_vti_bin/listdata.svc/Vehicles?$select=Title
Genel olarak SharePoint / Office365 client side uygulamalarımızda yukarıda anlattığımız temel OData sorgu tiplerini kullanarak AngularJs veya Jquery kütüphaneleri ile efektif ekranlar tasarlayabiliriz. Bu konu hakkında kod örneklerimizi bir dahaki yazımızda anlatmak üzere faydalı olmasını dilerim.
Kaynaklar : https://www.odata.org/ , https://msdn.microsoft.com