يتناول هذا المستند بعض الأساليب التي يمكنك استخدامها لتحسين أداء تطبيقك. في بعض الحالات، يتم استخدام أمثلة من واجهات برمجة تطبيقات أخرى تم تنفيذها لتوضيح الأفكار المقدَّمة. ومع ذلك، تنطبق المفاهيم نفسها على Display & Video 360 API.
العمل مع موارد جزئية
هناك طريقة أخرى لتحسين أداء طلبات البيانات من واجهة برمجة التطبيقات، وهي طلب الجزء من البيانات الذي يهمّك فقط. يتيح ذلك لتطبيقك تجنُّب نقل الحقول غير المطلوبة وتحليلها وتخزينها، حتى يتمكّن من استخدام الموارد مثل الشبكة ووحدة المعالجة المركزية والذاكرة بكفاءة أكبر.
ردّ جزئي
يُرسِل الخادم تلقائيًا التمثيل الكامل لمورد بعد معالجة الطلبات. للحصول على أداء أفضل، يمكنك أن تطلب من الخادم إرسال الحقول التي تحتاج إليها فقط والحصول على استجابة جزئية بدلاً من ذلك.
لطلب استجابة جزئية، استخدِم مَعلمة الطلب fields
لتحديد
الحقول التي تريد عرضها. يمكنك استخدام هذه المَعلمة مع أي طلب
يعرض بيانات استجابة.
مثال
يوضّح المثال التالي استخدام المَعلمة fields
مع
Display & Video 360 API.
طلب بسيط: يحذف طلب HTTP GET
هذا المَعلمة fields
ويُعيد
المورد الكامل.
GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1
استجابة المورد الكاملة: تتضمّن بيانات المورد الكاملة الحقلَين التاليَين، بالإضافة إلى العديد من الحقول الأخرى التي تم حذفها لأسباب تتعلق بالإيجاز.
200 OK
{
"advertisers": [
{
"name": "advertisers/1",
"advertiserId": "1",
"partnerId": "1",
"displayName": "Example Advertiser 1",
"entityStatus": "ENTITY_STATUS_ACTIVE",
"updateTime": "2019-01-01T00:00:00.000000Z",
"generalConfig": {
"domainUrl": "http://example.com",
"timeZone": "America/New_York",
"currencyCode": "USD",
"address": {
}
},
"adServerConfig": {
"thirdPartyOnlyConfig": {
}
},
"creativeConfig": {
},
"dataAccessConfig": {
"sdfConfig": {
"sdfConfig": {
"version": "VERSION_3_1"
}
}
},
"integrationDetails": {
}
},
{
"name": "advertisers/2",
"advertiserId": "2",
"partnerId": "1",
"displayName": "Example Advertiser 2",
"entityStatus": "ENTITY_STATUS_ACTIVE",
"updateTime": "2019-01-01T00:00:00.000000Z",
"generalConfig": {
"domainUrl": "http://example.com",
"timeZone": "America/New_York",
"currencyCode": "USD",
"address": {
}
},
"adServerConfig": {
"thirdPartyOnlyConfig": {
}
},
"creativeConfig": {
},
"dataAccessConfig": {
"sdfConfig": {
"sdfConfig": {
"version": "VERSION_3_1"
}
}
},
"integrationDetails": {
}
},
...
],
"nextPageToken": "..."
}
طلب استجابة جزئية: يستخدم الطلب التالي للمورد نفسه
المَعلمة fields
لتقليل كمية البيانات المعروضة بشكل كبير.
GET https://displayvideo.googleapis.com/v4/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)
استجابة جزئية: استجابةً للطلب أعلاه، يُرسِل الخادم بدوره استجابة تتضمّن صفيفًا مُبسّطًا للمعلِنين لا يتضمّن سوى رقم تعريف المعلِن والاسم المعروض وسمة رقم تعريف الشريك لكل معلِن، إذا كانت متوفّرة.
200 OK
{
"advertisers": [
{
"advertiserId": "1",
"partnerId": "1",
"displayName": "Example Advertiser 1"
},
{
"advertiserId": "2",
"partnerId": "1",
"displayName": "Example Advertiser 2"
},
...
]
}
تجدر الإشارة إلى أنّ الاستجابة هي عنصر JSON يتضمّن فقط الحقول المحدّدة والعناصر الرئيسية التي تحتوي عليها.
في ما يلي تفاصيل حول كيفية تنسيق المَعلمة fields
، يليها
مزيد من التفاصيل حول ما يتم عرضه بالضبط في الاستجابة.
ملخّص بنية مَعلمة الحقول
يستند تنسيق قيمة مَعلمة الطلب fields
بشكل فضفاض إلى بنية XPath. في ما يلي ملخّص للبنية المتوافقة، وسيتم تقديم أمثلة إضافية في القسم التالي.
استخدِم قائمة مفصولة بفواصل لاختيار حقول متعددة.
استخدِم
a/b
لاختيار حقلb
مُدمَج في الحقلa
، واستخدِمa/b/c
لاختيار حقلc
مُدمَج فيb
.استخدِم أداة اختيار فرعية لطلب مجموعة من الحقول الفرعية المحدّدة من الصفائف أو العناصر عن طريق وضع التعبيرات بين قوسين "
( )
".على سبيل المثال: لا تعرض دالة
fields=advertisers(advertiserId,generalConfig/domainUrl)
سوى رقم تعريف المعلِن وعنوان URL للنطاق لكل عنصر في صفيف المعلِنين. يمكنك أيضًا تحديد حقل فرعي واحد، حيث يكونfields=advertisers(advertiserId)
مكافئًا لfields=advertisers/advertiserId
.
المزيد من الأمثلة على استخدام مَعلمة fields
تتضمّن الأمثلة أدناه أوصافًا لكيفية تأثير قيمة المَعلمة fields
في الاستجابة.
- حدِّد الحقول التي تريد عرضها، أو أجرِ عمليات اختيار للحقول.
قيمة مَعلمة الطلب
fields
هي قائمة بالحقول مفصولة بفواصل، ويتم تحديد كل حقل بالنسبة إلى جذر الاستجابة. وبالتالي، إذا كنت تُجري عمليةlist
، تكون الاستجابة مجموعة، وتشمل عمومًا صفيفًا من الموارد. إذا كنت تُجري عملية تُعرِض موردًا واحدًا، يتم تحديد الحقول بالنسبة إلى ذلك المورد. إذا كان الحقل الذي تختاره هو مصفوفة (أو جزء منها)، يُرجِع الخادم الجزء المحدَّد من جميع العناصر في المصفوفة.في ما يلي بعض الأمثلة على مستوى المجموعة:
مثال التأثير advertisers
تعرِض جميع العناصر في صفيف advertisers
، بما في ذلك جميع الحقول في كل عنصر، ولكن بدون حقول أخرى.advertisers,nextPageToken
تُرجع الحقل nextPageToken
وجميع العناصر في صفيفadvertisers
.advertisers/advertiserId
لا تعرض سوى advertiserId
لجميع العناصر في صفيفadvertisers
.
عند عرض حقل مُدمَج، يتضمن الردّ العناصر الرئيسية التي تحيط به. لا تتضمّن الحقول الرئيسية أي حقول فرعية أخرى ما لم يتم اختيارها أيضًا بشكل صريح.advertisers/generalConfig/domainUrl
لعرض الحقل domainUrl
لعنصرgeneralConfig
، الذي يكون مدمجًا بدوره ضمن مصفوفةadvertisers
.في ما يلي بعض الأمثلة على مستوى الموارد:
مثال التأثير advertiserId
لعرض الحقل advertiserId
للمورد المطلوب.generalConfig/domainUrl
عرض الحقل domainUrl
لعنصرgeneralConfig
في المورد المطلوب- يمكنك طلب أجزاء من حقول معيّنة فقط باستخدام الاختيارات الفرعية.
تلقائيًا، إذا كان طلبك يحدّد حقولًا معيّنة، يعرض الخادم العناصر أو عناصر المصفوفة بالكامل. يمكنك تحديد إجابة تتضمّن حقولًا فرعية معيّنة فقط. يمكنك إجراء ذلك باستخدام بنية الاختيار الفرعي "
( )
" ، كما هو موضّح في المثال أدناه.مثال التأثير advertisers(advertiserId,generalConfig/domainUrl)
تعرِض فقط قيم advertiserId
وgeneralConfigdomainUrl
لكل عنصر في مصفوفةadvertisers
.
التعامل مع الردود الجزئية
بعد أن يعالج الخادم طلبًا صالحًا يتضمّن مَعلمة طلب البحث fields
، يُرسِل رمز حالة HTTP 200 OK
، بالإضافة إلى data المطلوبة. إذا كانت مَعلمة طلب البحث fields
تتضمّن خطأً أو كانت غير صالحة، يعرض
الخادم رمز حالة HTTP 400 Bad Request
، بالإضافة إلى رسالة خطأ
توضّح لك المشكلة في اختيار الحقول (على سبيل المثال،
"Invalid field selection a/b"
).