SharePoint / Office365 Webservisleri üzerinde OData Kullanımı

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

Leave a Reply