اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
دو دقیقه
قبل از اینکه با کاربردهای OData بیشتر آشنا شوید میبایست قراردادهای کوئری نویسی با استفاده از آدرس وب سرویس را فراگیرید. در سمت گیرنده WCF Data Service زمانی که شما یک آدرس وب سرویس را به پروژه خود اضافه مینمایید مدلها و روابط موجودیتها بصورت خودکار تولید شده و دیگر لازم نیست از کوئری نویسی با آدرس وب سرویس استفاده نمایید و به جای آن از LINQ براحتی میتوانید دادههای خود را جستجو نمایید.اما اگر بخواهید وب سرویس را در بسترهای دیگر یا در سمت گیرنده وب استفاده نمایید آشنایی با کوئری نویسی به شما امکان جستجو و دسترسی به دادههای مدنظرتان را میدهد گرچه کتابخانههای OData موجود این امکان را آسانتر میسازد.
اجزای OData Url
OData Url شامل سه جزء میباشد که ترکیب این سه جرء امکان کوئری نویسی را فراهم میسازد
- Service Root Url یا ریشه آدرس سرویس که آدرس و نام وب سرویس را مشخص میسازد.
- Resource Path یا مسیر منابع که امکان دسترسی به منابع موجود وب سرویس را فراهم میسازد.
- Query Options یا گزینههای کوئری که امکان کوئری نویسی با استفاده از عملگرها و پارامترهای گرامر OData را فراهم میسازد.
در زیر این اجزا بهتر نشان داده شده است:
http://services.odata.org/OData/OData.svc/Category(1)/Products?$top=2&$orderby=name \_______________________________________/ \__________________/ \__________________/ | | | service root URL resource path query options
مسیر منابع در OData
برای دسترسی به موجودیتهای سرویس در قسمت مسیر منابع با نوشتن نام آن موجودیت این امکان فراهم میشود مثلا برای دسترسی به موجودیت Prodacts بعد از نام وب سرویس از یک / استفاده مینامیم که Backslash برای جدا کردن موجودیتها استفاده میشود
http://services.odata.org/OData/OData.svc/Products
بروزرسانی:حال اگر بخواهیم به Supplierهای Product با استفاده از کلید موجودیت به یک product دسترسی یابیم. ( بعد Id و بعد ) برای product و دوباره / و Supplier را مینویسیم
http://services.odata.org/OData/OData.svc/Products(1)/Supplier
حتی امکان دسترسی در توابع موجودیتها نیز میسر است
http://services.odata.org/OData/OData.svc/Products/MostExpensive
اگر بخواهیم پارامتری را مقدار دهی نماییم بصورت زیر عمل میکنیم
http://services.odata.org/OData/OData.svc/GetProductsByCategoryId(categoryId=2)
برای دسترسی به property های موجودیتها بصورت زیر عمل میکنیم
http://services.odata.org/OData/OData.svc/Products(1)/Name
گزینههای کوئری
OData پنج عملگر دارد که امکان دستکاری موجودیتها را فراهم میسازد
- filter$ عناصر برگشتی را محدود میسازد
- orderby$ امکان مرتب سازی عناصر برگشتی را فراهم میسازد
- skip$ امکان گذشت از تعدادی عناصر را از ابتدای عناصر فراهم میسازد
- top$ تعداد عناصر برگشتی را محدود میسازد
- expand$ امکان برگشت محتوای وابسته به عناصر برگشتی را فراهم میسازد
در زیر مثالهای از این گزینهها آورده شده است
//filter http://services.odata.org/OData/OData.svc/Products?$filter=Name eq 'Milk' //orderby http://services.odata.org/OData/OData.svc/Products?$orderby=Name //skip http://services.odata.org/OData/OData.svc/Products?$skip=5 //top http://services.odata.org/OData/OData.svc/Products?$top=10 //expand http://services.odata.org/OData/OData.svc/Products?$expand=Category
ادامه دارد...