معرفی و ساختار
DorAPI سیستم استاندارد Doravel برای مدیریت و ساخت API های داینامیک و فیلترپذیر است.
این ساختار به شما کمک میکند بدون نیاز به تعریف دستی کوئریها، دادهها را بهصورت کاملاً انعطافپذیر از طریق پارامترهای Query کنترل کنید.
پارامترهای کوئری (Query Parameters)
در DorAPI شما میتوانید با استفاده از پارامترهای زیر رفتار پاسخ API را مشخص کنید:
Fields
پارامتر fields مشابه عبارت SELECT در SQL عمل میکند و تعیین میکند چه فیلدهایی از مدل در خروجی ارسال شوند.
ساختار کلی
fields[index] = database_column
مثالها
?fields=*
اگر این پارامتر ارسال نشود، فیلدهای پیشفرض مدل (که در هر endpoint مستند میشوند) بازگردانده میشود.
?fields[0]=name
خروجی شامل id و name خواهد بود.
فیلد id همیشه بهصورت خودکار اضافه میشود.
Populate
پارامتر populate برای افزودن روابط (Relations) مدل در پاسخ استفاده میشود.
این ویژگی شبیه به ()with در Laravel است.
ساختار کلی
populate[index] = relation_name
مثالها
?populate=*
?populate[0]=city
انتخاب فیلدهای روابط (Populate با فیلدها)
DorAPI اجازه میدهد هنگام استفاده از populate تنها فیلدهای خاص یک relation را بازگردانید. این کار با ساختار زیر انجام میشود:
populate[relation_name][fields][index] = database_column
?populate[city][fields][0]=name
?populate[city][fields][1]=zip_code
در این مثال، تنها فیلدهای name و zip_code از رابطه city بازگردانده میشوند.
- اگر برای یک رابطه
fieldsمشخص نکنید، مقدار پیشفرض یاdefaultFieldsمربوط به آن relation اعمال میشود. - برای جلوگیری از افشای اطلاعات حساس، همواره فهرست فیلدها و روابط مجاز را در
allowedFieldsوallowedPopulatesتنظیم کنید. - در برخی کلاینتها ممکن است لازم باشد براکتها (
[ ]) را در URL کدگذاری (URL-encode) کنید؛ اما اکثر فریمورکها و کتابخانهها این ساختار را بهصورت خودکار مدیریت میکنند.
Filters
پارامتر filters مانند متد where در SQL عمل میکند و برای فیلتر کردن نتایج استفاده میشود.
ساختار کلی
filters[column_name][behavior_operator]=value
برای استفاده از اپراتورهای منطقی AND و OR، میتوانید از ساختارهای زیر استفاده کنید:
filters[$and][index][column_name][behavior_operator]=value
filters[$or][column_name][behavior_operator]=value
اپراتورهای منطقی (Logical Operators)
DorAPI از اپراتورهای منطقی $and و $or برای ترکیب چندین شرط فیلتر پشتیبانی میکند.
| اپراتور | معادل SQL | توضیح |
|---|---|---|
$and | AND | تمام شرایط باید برقرار باشند |
$or | OR | حداقل یکی از شرایط باید برقرار باشد |
به طور پیشفرض اگر اپراتور منطقی مشخص نکنید، از $and استفاده میشود.
ساختار با ایندکسهای عددی
میتوانید از ایندکسهای عددی برای تعریف چندین شرط $and استفاده کنید:
filters[$and][0][column_name][behavior_operator]=value
filters[$and][1][column_name][behavior_operator]=value