اکثر سرویسها در Display & Video 360 API یک روش LIST
برای بازیابی انبوه منابع ارائه میکنند. این روش های LIST
معمولاً از فیلتر کردن نتایج از طریق پارامتر پرس و جو filter
پشتیبانی می کنند. از این پارامتر برای بهینه سازی استفاده از API خود فقط با بازیابی آنچه نیاز دارید استفاده کنید.
این راهنما نحوه استفاده موثر از پارامتر filter
را نشان می دهد.
ساختار فیلتر
مقدار پارامتر filter
یک رشته است که از یک یا چند محدودیت تشکیل شده است که می تواند با عملگرهای AND
یا OR
ترکیب شود و با استفاده از پرانتز گروه بندی شود.
محدودیت ها به شکل {field} {operator} {value}
هستند. در اینجا یک مثال است:
entityStatus="ENTITY_STATUS_ACTIVE"
طول رشته فیلتر نمی تواند بیش از 500 کاراکتر باشد. اگر رشته فیلتر شما بیش از 500 کاراکتر است، یکی از موارد زیر را انجام دهید:
- منطق را به چندین رشته فیلتر تقسیم کنید و منابع را با استفاده از درخواست های
LIST
جداگانه بازیابی کنید. - مقداری از منطق را از رشته فیلتر حذف کنید و از آن برای فیلتر کردن منابع بازیابی شده به صورت محلی استفاده کنید.
برای اطمینان از اینکه منطق به درستی اعمال می شود، مقادیر محدودیت را در گیومه قرار دهید.
اگر مستقیماً بدون استفاده از کتابخانه سرویس گیرنده تماسهای LIST
برقرار میکنید، رشتههای فیلتر خود را رمزگذاری کنید.
برای جزئیات بیشتر در مورد قالب بندی درخواست های خود ، منطق بین محدودیت ها را ببینید.
فیلدهای قابل فیلتر
فیلدهای قابل فیلتر هر روش LIST
در توضیحات پارامتر filter
روش ذکر شده است. در بیشتر موارد، میتوانید زیر مجموعهای از فیلدهای استاندارد یک منبع را فیلتر کنید. در برخی موارد نادر، فیلدهای اضافی وجود دارد که می توانید فقط برای فیلتر کردن از آنها استفاده کنید.
هر فیلد در توضیحات پارامتر حداقل یکی از عملگرهای قابل مقایسه زیر را پشتیبانی می کند:
اپراتورهای قابل مقایسه | ||
---|---|---|
EQUALS (=) | مقدار فیلد منبع برابر با مقدار داده شده است. مثال: | |
LESS THAN OR EQUAL TO (<=) | مقدار فیلد منبع کمتر یا مساوی مقدار داده شده است. اغلب برای مقایسه تاریخ یا زمان تاریخ استفاده می شود. مثال: | |
GREATER THAN OR EQUAL TO (>=) | مقدار فیلد منبع بزرگتر یا مساوی مقدار داده شده است. اغلب برای مقایسه تاریخ یا زمان تاریخ استفاده می شود. مثال: | |
HAS (:) | مقدار فیلد منبع حاوی مقدار داده شده است. اگر فیلد منبع یک رشته باشد، بررسی می کند که آیا مقدار داده شده یک زیررشته موجود است یا خیر. اگر فیلد منبع یک آرایه باشد، بررسی می کند که آیا آرایه حاوی مقدار داده شده است یا خیر. مثال: |
اگر هیچ عملگر برای فیلد در توضیحات پارامتر مشخص نشده باشد، فقط می توانید از عملگر EQUALS (=)
استفاده کنید. برخی از فیلدها از چندین عملگر پشتیبانی می کنند.
برخی از فیلدهای قابل فیلتر، مانند موارد مربوط به تاریخ و زمان، به مقدار قابل مقایسه برای پیروی از یک قالب خاص نیاز دارند. فرمت در کنار فیلد در توضیحات پارامتر filter
مشخص شده است.
منطق بین محدودیت ها
می توانید چندین محدودیت را ترکیب کنید تا پاسخ درخواست LIST
خود را محدود یا گسترش دهید.
معمولاً می توانید چندین محدودیت را با عملگرهای منطقی AND
و OR
ترکیب کنید. هر متد LIST
مشخص می کند که کدام عملگرها را پشتیبانی می کند. برخی از روش ها تنها از استفاده از یک محدودیت در پارامتر filter
پشتیبانی می کنند.
هنگام ساخت رشته های فیلتر با عملگرهای منطقی AND
یا OR
محدودیت های زیر را در نظر بگیرید:
-
AND
باید بین محدودیتها یا گروههایی از محدودیتها، که فیلدهای مختلف را فیلتر میکنند یا همان فیلد را بهطور متفاوتی فیلتر میکنند، استفاده شود. در اینجا چند نمونه آورده شده است:-
updateTime>="2023-03-01T12:00:00Z" AND entityStatus="ENTITY_STATUS_ACTIVE"
-
updateTime>="2023-03-01T12:00:00Z" AND updateTime<="2023-04-01T12:00:00Z" AND (entityStatus="ENTITY_STATUS_ACTIVE" OR entityStatus="ENTITY_STATUS_PAUSED")
-
-
OR
باید بین محدودیتهای فردی که توسط همان فیلد فیلتر میشوند استفاده شود. در اینجا یک مثال است:-
(entityStatus="ENTITY_STATUS_ACTIVE" OR entityStatus="ENTITY_STATUS_PAUSED") AND (lineItemType="LINE_ITEM_TYPE_DISPLAY_DEFAULT" OR lineItemType="LINE_ITEM_TYPE_VIDEO_DEFAULT")
-
شما نمی توانید از
OR
برای ترکیب دو گروه از محدودیت ها استفاده کنید. به جای آن از چندین درخواستLIST
با مقادیر فیلتر مختلف استفاده کنید. به عنوان مثال، از درخواست هایLIST
جداگانه زیر استفاده کنید:-
(lineItemType="LINE_ITEM_TYPE_DISPLAY_DEFAULT" AND insertionOrderId="123")
-
(lineItemType="LINE_ITEM_TYPE_VIDEO_DEFAULT" AND insertionOrderId="456")
از عملگر
OR
برای ترکیب آنها استفاده نکنید:(lineItemType="LINE_ITEM_TYPE_DISPLAY_DEFAULT" AND insertionOrderId="123") OR (lineItemType="LINE_ITEM_TYPE_VIDEO_DEFAULT" AND insertionOrderId="456")
-
اگر از آنها برای گروه بندی محدودیت ها در یک رشته فیلتر استفاده نکنید، ممکن است پرانتزها به طور ضمنی در نظر گرفته شوند. به عنوان مثال، رشته فیلتر زیر:
updateTime>="2023-03-01T12:00:00Z" AND entityStatus="ENTITY_STATUS_ACTIVE" OR entityStatus="ENTITY_STATUS_PAUSED" OR entityStatus="ENTITY_STATUS_DRAFT"
چنین تفسیر می شود:
updateTime>="2023-03-01T12:00:00Z" AND (entityStatus="ENTITY_STATUS_ACTIVE" OR entityStatus="ENTITY_STATUS_PAUSED" OR entityStatus="ENTITY_STATUS_DRAFT")