مقدمة
هذا المستند مخصّص للمطوّرين الذين يريدون كتابة تطبيقات تتفاعل مع YouTube. وهي تشرح المفاهيم الأساسية لـ YouTube وواجهة برمجة التطبيقات ذاتها. وتقدّم أيضًا نظرة عامة على الوظائف المختلفة التي تتيحها واجهة برمجة التطبيقات.
قبل البدء
-
تحتاج إلى حساب Google للوصول إلى وحدة التحكم في واجهة Google API، وطلب مفتاح واجهة برمجة التطبيقات، وتسجيل تطبيقك.
-
أنشئ مشروعًا في Google Developers Console واحصل على بيانات اعتماد التفويض حتى يتمكن تطبيقك من إرسال طلبات واجهة برمجة التطبيقات.
-
بعد إنشاء مشروعك، تأكَّد من أنّ YouTube Data API هي إحدى الخدمات المسجّلة في طلبك لاستخدامها:
- انتقِل إلى وحدة تحكم واجهة برمجة التطبيقات واختَر المشروع الذي سجّلته للتو.
- انتقِل إلى صفحة واجهات برمجة التطبيقات التي تم تفعيلها. في قائمة واجهات برمجة التطبيقات، تأكّد من أنّ الحالة مفعّلة للإصدار 3 من YouTube Data API.
-
إذا كان تطبيقك سيستخدم أيًا من أساليب واجهة برمجة التطبيقات التي تتطلب ترخيص المستخدم، فاقرأ دليل المصادقة للتعرف على كيفية تطبيق ترخيص OAuth 2.0.
-
حدد مكتبة عميل لتبسيط عملية تطبيق واجهة برمجة التطبيقات.
-
تعرَّف على المفاهيم الأساسية لتنسيق بيانات JSON (JavaScript Object Notation). JSON هو تنسيق بيانات شائع مستقل عن اللغة ويقدم تمثيلاً نصيًا بسيطًا للبُنى البيانات العشوائية. لمزيد من المعلومات، راجع json.org.
الموارد وأنواع الموارد
المورد هو كيان بيانات فردي له معرّف فريد. يوضّح الجدول أدناه الأنواع المختلفة من الموارد التي يمكنك التفاعل معها باستخدام واجهة برمجة التطبيقات.
الموارد | |
---|---|
activity |
تحتوي على معلومات حول إجراء اتخذه مستخدم معين على موقع YouTube. تتضمن إجراءات المستخدم التي يتم الإبلاغ عنها في خلاصات الأنشطة تقييم فيديو ومشاركة فيديو ووضع علامة على مقطع فيديو كمحتوى مفضّل ونشر نشرة قناة، وغير ذلك. |
channel |
يحتوي على معلومات حول قناة واحدة على YouTube |
channelBanner |
يحدد هذا الحقل عنوان URL الذي سيتم استخدامه لضبط صورة تم تحميلها مؤخرًا كصورة بانر لقناة. |
channelSection |
يحتوي على معلومات حول مجموعة فيديوهات اختارت القناة عرضها. على سبيل المثال، يمكن أن يعرض القسم آخر الفيديوهات المحمّلة إلى قناة أو الفيديوهات الأكثر رواجًا أو فيديوهات من قائمة تشغيل واحدة أو أكثر. |
guideCategory |
يحدّد فئة القنوات التي يربطها YouTube بالقنوات استنادًا إلى محتواها أو مؤشرات أخرى، مثل مدى الرواج. تهدف فئات الأدلة إلى تنظيم القنوات بطريقة تسهّل على مستخدمي YouTube العثور على المحتوى الذي يبحثون عنه. وعلى الرغم من أنّه يمكن ربط القنوات بفئة واحدة أو أكثر من فئات الأدلة، لا يمكن ضمان تصنيفها ضمن أيّ من فئات الأدلة. |
i18nLanguage |
يحدّد لغة التطبيق المتوافقة مع موقع YouTube الإلكتروني يمكن أيضًا الإشارة إلى لغة التطبيق باسم لغة واجهة المستخدم. |
i18nRegion |
تحدّد هذه السمة منطقة جغرافية يمكن لمستخدم YouTube اختيارها كمنطقة المحتوى المفضّلة. ويمكن أيضًا الإشارة إلى منطقة المحتوى بوصفها منطقة محتوى. |
playlist |
يمثّل هذا النوع قائمة تشغيل واحدة على YouTube. إنّ قائمة التشغيل عبارة عن مجموعة من الفيديوهات التي يمكن عرضها بشكل تسلسلي ومشاركتها مع مستخدمين آخرين. |
playlistItem |
تحدد موردًا، مثل فيديو، يمثل جزءًا من قائمة تشغيل. يحتوي مورد playlistItem أيضًا على تفاصيل تشرح كيفية استخدام المورد المضمّن في قائمة التشغيل. |
search result |
يحتوي على معلومات حول فيديو أو قناة أو قائمة تشغيل على YouTube تتطابق مع معلَمات البحث المحدّدة في طلب البيانات من واجهة برمجة التطبيقات. على الرغم من أنّ نتيجة البحث تشير إلى مورد يمكن التعرّف عليه بشكل فريد، مثل الفيديو، فإنّها لا تحتوي على بيانات ثابتة خاصة بها. |
subscription |
تحتوي على معلومات حول اشتراك مستخدم في YouTube يُرسِل الاشتراك إشعارًا إلى المستخدم عند إضافة فيديوهات جديدة إلى قناة أو عندما يتّخذ مستخدم آخر أحد الإجراءات المتعدّدة على YouTube، مثل تحميل فيديو أو تقييم فيديو أو التعليق على فيديو. |
thumbnail |
يحدد الصور المصغّرة المرتبطة بالمورد. |
video |
يمثّل هذا النوع فيديو واحدًا على YouTube. |
videoCategory |
يحدد فئة تم ربطها أو يمكن ربطها بفيديوهات تم تحميلها. |
watermark |
تحدد هذه السمة صورة يتم عرضها أثناء عمليات تشغيل فيديوهات على قناة معيّنة. يمكن لمالك القناة أيضًا تحديد قناة مستهدَفة يتمّ ربط الصورة بها، بالإضافة إلى تفاصيل التوقيت التي تحدّد وقت ظهور العلامة المائية أثناء عمليات تشغيل الفيديو ومدة ظهورها. |
لاحظ أنه، في كثير من الحالات، يحتوي المورد على مراجع لموارد أخرى. على سبيل المثال، تحدد السمة snippet.resourceId.videoId
الخاصة بمورد playlistItem
مورد فيديو يحتوي بدوره على معلومات كاملة عن الفيديو. كمثال آخر، تحتوي نتيجة البحث على السمة videoId
أو playlistId
أو channelId
التي تحدد مصدرًا معيّنًا لفيديو أو قائمة تشغيل أو قناة.
العمليات المتاحة
يعرض الجدول التالي الطرق الأكثر شيوعًا التي تتيحها واجهة برمجة التطبيقات. تدعم بعض الموارد أيضًا طرقًا أخرى تؤدي دوال أكثر تحديدًا لتلك الموارد. على سبيل المثال، تربط الطريقة videos.rate
بين تقييم المستخدمين بفيديو معيّن، وتحمّل الطريقة thumbnails.set
صورة مصغّرة للفيديو إلى YouTube وتربطها بفيديو.
العمليات | |
---|---|
list |
لاسترداد (GET ) قائمة لا تحتوي على موارد أو أكثر. |
insert |
ينشئ (POST ) موردًا جديدًا. |
update |
لتعديل (PUT ) مورد حالي ليعكس البيانات في طلبك. |
delete |
يزيل (DELETE ) موردًا محددًا. |
تتيح واجهة برمجة التطبيقات حاليًا طرقًا لإدراج كل نوع من أنواع الموارد المتوافقة، كما تتيح عمليات الكتابة للعديد من الموارد أيضًا.
يحدد الجدول أدناه العمليات المتاحة لأنواع مختلفة من الموارد. إنّ العمليات التي تؤدي إلى إدراج الموارد أو تحديثها أو حذفها تتطلب دائمًا تفويض المستخدم. في بعض الحالات، تتوافق طرق list
مع الطلبات المُصرّح بها وغير المُصرَّح بها على حد سواء، حيث تعمل الطلبات غير المصرّح بها على استرداد البيانات العلنية فقط، بينما يمكن للطلبات المُصرّح بها أيضًا استرداد معلومات حول المستخدم الذي تمت مصادقته حاليًا أو تلك الخاصة به.
العمليات المتاحة | ||||
---|---|---|---|---|
list | insert | update | delete | |
activity |
||||
caption |
||||
channel |
||||
channelBanner |
||||
channelSection |
||||
comment |
||||
commentThread |
||||
guideCategory |
||||
i18nLanguage |
||||
i18nRegion |
||||
playlist |
||||
playlistItem |
||||
search result |
||||
subscription |
||||
thumbnail |
||||
video |
||||
videoCategory |
||||
watermark |
مقدار استخدام الحصة
تستخدم "YouTube Data API" حصة معيّنة لضمان استخدام المطوّرين للخدمة على النحو المطلوب وعدم إنشاء تطبيقات تقلّل من جودة الخدمة بشكل غير عادل أو تحدّ من وصول الآخرين إلى هذه الخدمة. يتم فرض حصة من نقطة واحدة على الأقل مقابل جميع طلبات البيانات من واجهة برمجة التطبيقات، بما في ذلك الطلبات غير الصالحة. يمكنك العثور على الحصة المتاحة لتطبيقك في API Console.
في المشاريع التي تتيح استخدام YouTube Data API، يتم تخصيص حصة تلقائية بمقدار 10,000 وحدة في اليوم، وهو مبلغ كافٍ للغالبية العظمى من مستخدمي واجهة برمجة التطبيقات. إنّ الحصة التلقائية، والتي تخضع للتغيير، تساعدنا في تحسين عمليات تخصيص الحصص وتوسيع نطاق بنيتنا الأساسية بطريقة أكثر فائدة لمستخدمي واجهة برمجة التطبيقات. يمكنك الاطّلاع على استخدام حصتك في صفحة الحصص في وحدة التحكم في واجهة برمجة التطبيقات.
ملاحظة: إذا وصلت إلى الحدّ الأقصى للحصة، يمكنك طلب حصة إضافية من خلال إكمال إضافة حصة نموذج طلب لخدمات YouTube API.
جارٍ احتساب استخدام الحصة
تحتسب Google استخدام حصتك من خلال تحديد تكلفة لكل طلب. هناك أنواع مختلفة من العمليات لها تكاليف حصص مختلفة. على سبيل المثال:
- عملية قراءة تقوم عادةً باسترداد قائمة بالموارد مثل القنوات والفيديوهات وقوائم التشغيل -- تبلغ تكلفة وحدة واحدة.
- عادةً ما تكون هناك تكاليف عملية كتابة مورد أو تحديثه أو حذفه
50
وحدة. - يكلف طلب البحث
100
وحدة. - تبلغ تكلفة تحميل الفيديو
1600
وحدة.
يعرض جدول تكاليف حصص طلبات البيانات من واجهة برمجة التطبيقات تكلفة الحصة لكل طريقة واجهة برمجة تطبيقات. وبوضع هذه القواعد في الاعتبار، يمكنك تقدير عدد الطلبات التي يمكن أن يرسلها تطبيقك في اليوم دون تجاوز حصتك.
المراجع الجزئية
تسمح واجهة برمجة التطبيقات باسترداد الموارد الجزئية، بل تتطلب في الواقع، استرداد الموارد الجزئية حتى تتجنب التطبيقات نقل البيانات غير الضرورية وتحليلها وتخزينها. ويضمن هذا الأسلوب أيضًا أنّ واجهة برمجة التطبيقات تستخدم موارد الشبكة وCPU والذاكرة بكفاءة أكبر.
تتيح واجهة برمجة التطبيقات مَعلمتَين للطلب، ويتم توضيحهما في الأقسام التالية، واللذين يجب استخدامهما لتحديد خصائص الموارد التي يجب تضمينها في ردود واجهة برمجة التطبيقات.
- تحدِّد المَعلمة
part
مجموعات من السمات التي يجب عرضها لمورد معيّن. - تعمل المَعلمة
fields
على فلترة استجابة واجهة برمجة التطبيقات لعرض مواقع محدّدة فقط ضمن أجزاء الموارد المطلوبة.
كيفية استخدام مَعلمة part
المعلمة part
هي معلمة مطلوبة لأي طلب بيانات من واجهة برمجة التطبيقات يسترد موردًا أو يعرضه. تحدِّد المَعلمة سمة واحدة أو أكثر من خصائص الموارد من المستوى الأعلى (غير المتداخلة) التي يجب تضمينها في استجابة واجهة برمجة التطبيقات. على سبيل المثال، يحتوي مورد video
على الأجزاء التالية:
snippet
contentDetails
fileDetails
player
processingDetails
recordingDetails
statistics
status
suggestions
topicDetails
وجميع هذه الأجزاء هي كائنات تحتوي على خصائص متداخلة، ويمكنك اعتبار هذه الكائنات مجموعات من حقول البيانات الوصفية التي قد يستردها خادم واجهة برمجة التطبيقات (أو لا يستردها). وبناءً على ذلك، تتطلّب منك مَعلمة part
اختيار مكوّنات الموارد التي يستخدمها تطبيقك. ويخدم هذا الشرط غرضين رئيسيين:
- ويقلل من وقت الاستجابة عن طريق منع خادم واجهة برمجة التطبيقات من قضاء وقت في استرداد حقول البيانات الوصفية التي لا يستخدمها تطبيقك.
- كما أنه يقلل من استخدام معدل نقل البيانات عن طريق تقليل (أو إزالة) كمية البيانات غير الضرورية التي قد يستردها التطبيق.
بمرور الوقت، وعندما تضيف الموارد المزيد من الأجزاء، ستزداد هذه المزايا فقط لأنّ تطبيقك لن يطلب سمات تم تقديمها حديثًا غير متوافقة معها.
كيفية استخدام مَعلمة fields
تعمل المَعلمة fields
على فلترة استجابة واجهة برمجة التطبيقات التي تحتوي فقط على أجزاء الموارد المحدّدة في قيمة المَعلمة part
، بحيث لا تحتوي الاستجابة إلا على مجموعة محدّدة من الحقول. تتيح لك مَعلمة fields
إزالة السمات المدمَجة من استجابة واجهة برمجة التطبيقات، وبالتالي التقليل من استخدام معدّل نقل البيانات. (لا يمكن استخدام المَعلمة part
لفلترة السمات المدمجة من ردّ).
توضّح القواعد التالية البنية المتوافقة لقيمة المعلَمة fields
، التي تعتمد بشكل غير دقيق على بنية XPath:
- استخدِم قائمة مفصولة بفواصل (
fields=a,b
) لاختيار حقول متعددة. - استخدِم علامة النجمة (
fields=*
) كحرف بدل لتحديد جميع الحقول. - استخدِم الأقواس (
fields=a(b,c)
) لتحديد مجموعة من السمات المدمَجة التي سيتم تضمينها في استجابة واجهة برمجة التطبيقات. - استخدِم شرطة مائلة للأمام (
fields=a/b
) لتحديد سمة مضمّنة.
من الناحية العملية، تسمح هذه القواعد غالبًا لعدة قيم مختلفة في مَعلمات fields
باسترداد استجابة واجهة برمجة التطبيقات نفسها. على سبيل المثال، إذا أردت استرداد معرّف عنصر قائمة التشغيل وعنوانه وموضعه لكل عنصر في قائمة تشغيل، يمكنك استخدام أي من القيم التالية:
fields=items/id,playlistItems/snippet/title,playlistItems/snippet/position
fields=items(id,snippet/title,snippet/position)
fields=items(id,snippet(title,position))
ملاحظة: كما هو الحال مع جميع قيم مَعلمات طلب البحث، يجب ترميز قيمة مَعلمة fields
بعنوان URL. ولتسهيل القراءة، تتجاهل الأمثلة الواردة في هذا المستند الترميز.
نماذج طلبات جزئية
توضّح الأمثلة أدناه كيفية استخدام المَعلمتَين part
وfields
للتأكّد من أنّ الردود من واجهة برمجة التطبيقات لا تتضمّن سوى البيانات التي يستخدمها تطبيقك:
- يعرض المثال 1 مورد فيديو يتضمن أربعة أجزاء بالإضافة إلى السمتين
kind
وetag
. - يعرض المثال 2 مورد فيديو يتضمّن جزأين بالإضافة إلى السمتَين
kind
وetag
. - يعرض المثال 3 مورد فيديو يتضمّن جزأين ولكنه يستثني السمتَين
kind
وetag
. - يعرض المثال 4 مورد فيديو يتضمّن جزأين ولكنه يستثني
kind
وetag
بالإضافة إلى بعض السمات المدمجة في كائنsnippet
للمورد.
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,contentDetails,statistics,status Description: This example retrieves avideo
resource and identifies several resource parts that should be included in the API response. API response:{ "kind": "youtube#videoListResponse", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA\"", "videos": [ { "id": "7lCDEYXw3mM", "kind": "youtube#video", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q\"", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "contentDetails": { "duration": "PT15M51S", "aspectRatio": "RATIO_16_9" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" }, "status": { "uploadStatus": "STATUS_PROCESSED", "privacyStatus": "PRIVACY_PUBLIC" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,statistics Description: This example modifies thepart
parameter value so that thecontentDetails
andstatus
properties are not included in the response. API response:{ "kind": "youtube#videoListResponse", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/sDAlsG9NGKfr6v5AlPZKSEZdtqA\"", "videos": [ { "id": "7lCDEYXw3mM", "kind": "youtube#video", "etag": "\"UCBpFjp2h75_b92t44sqraUcyu0/iYynQR8AtacsFUwWmrVaw4Smb_Q\"", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&part=snippet,statistics&fields=items(id,snippet,statistics) Description: This example adds thefields
parameter to remove allkind
andetag
properties from the API response. API response:{ "videos": [ { "id": "7lCDEYXw3mM", "snippet": { "publishedAt": "2012-06-20T22:45:24.000Z", "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "description": "Antonio Fuentes speaks to us and takes questions on working with Google APIs and OAuth 2.0.", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/default.jpg" }, "medium": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/mqdefault.jpg" }, "high": { "url": "https://i.ytimg.com/vi/7lCDEYXw3mM/hqdefault.jpg" } }, "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
&fields=items(id,snippet(channelId,title,categoryId),statistics)&part=snippet,statistics Description: This example modifies thefields
parameter from example 3 so that in the API response, each video resource'ssnippet
object only includes thechannelId
,title
, andcategoryId
properties. API response:{ "videos": [ { "id": "7lCDEYXw3mM", "snippet": { "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw", "title": "Google I/O 101: Q&A On Using Google APIs", "categoryId": "28" }, "statistics": { "viewCount": "3057", "likeCount": "25", "dislikeCount": "0", "favoriteCount": "17", "commentCount": "12" } } ] }
تحسين الأداء
استخدام علامات ETag
يسمح ETags، وهو جزء قياسي من بروتوكول HTTP، للتطبيقات بالإشارة إلى إصدار معين من مورد واجهة برمجة تطبيقات معين. وقد يكون المورد عبارة عن خلاصة كاملة أو عنصرًا في تلك الخلاصة. تتوافق هذه الوظيفة مع حالات الاستخدام التالية:
-
التخزين المؤقت والاسترجاع المشروط: يمكن لتطبيقك تخزين موارد واجهة برمجة التطبيقات وعلامات ETag الخاصة بها في ذاكرة التخزين المؤقت. وبعد ذلك، عندما يطلب تطبيقك موردًا مخزَّنًا مرة أخرى، سيحدِّد علامة ETag المرتبطة بهذا المورد. إذا تم تغيير المورد، فستعرض واجهة برمجة التطبيقات المورد المعدل والعلامة ETag المرتبطة بهذا الإصدار من المورد. وإذا لم يتغير المورد، تعرض واجهة برمجة التطبيقات استجابة HTTP 304 (
Not Modified
)، ما يشير إلى أنّ المورد لم يتغيّر. يمكن للتطبيق تقليل استخدام وقت الاستجابة ومعدل نقل البيانات من خلال عرض الموارد المخزّنة مؤقتًا بهذه الطريقة.تختلف مكتبات العملاء الخاصة بواجهات Google APIs في توافقها مع علامات ETag. على سبيل المثال، تتيح مكتبة برامج JavaScript استخدام علامات ETags من خلال قائمة بيضاء لعناوين الطلبات المسموح بها التي تتضمّن
If-Match
وIf-None-Match
. تسمح القائمة البيضاء بالتخزين المؤقت العادي للمتصفح، بحيث يمكن عرض المورد من ذاكرة التخزين المؤقت للمتصفح في حالة عدم تغيير علامة ETag للمورد. من ناحية أخرى، لا يتيح عميل Obj-C استخدام علامات ETag. -
الحماية من عمليات استبدال التغييرات غير المقصودة – تساعد علامات ETag في ضمان عدم استبدال برامج متعددة لواجهة برمجة التطبيقات بدون قصد بتغييرات بعضها البعض. عند تعديل مورد أو حذفه، يمكن لتطبيقك تحديد علامة ETag الخاصة بالمورد. إذا لم تتطابق علامة ETag مع أحدث إصدار من هذا المورد، سيتعذّر طلب البيانات من واجهة برمجة التطبيقات.
يوفر استخدام علامات ETag في تطبيقك العديد من الفوائد:
- تستجيب واجهة برمجة التطبيقات بسرعة أكبر لطلبات الحصول على الموارد المخزّنة مؤقتًا ولكن التي لم يتم تغييرها، ما يؤدي إلى تقليل وقت الاستجابة واستخدام معدّل نقل بيانات أقل.
- ولن يستبدل تطبيقك، بدون قصد، التغييرات التي طرأت على مورد تم إجراؤها من برنامج واجهة برمجة تطبيقات آخر.
تتوافق Google APIs Client Library for JavaScript مع عناوين طلبات HTTP If-Match
وIf-None-Match
، ما يتيح عمل علامات ETag ضمن سياق التخزين المؤقت العادي للمتصفّح.
استخدام gzip
يمكنك أيضا تقليل معدل نقل البيانات اللازم لكل استجابة واجهة برمجة التطبيقات عن طريق تمكين ضغط gzip. على الرغم من أنّ تطبيقك يحتاج إلى وقت إضافي لوحدة المعالجة المركزية (CPU) لفك ضغط استجابات واجهة برمجة التطبيقات، فإنّ فائدة استهلاك موارد شبكة أقل عادةً تفوق تلك التكلفة.
لتلقي استجابة بترميز gzip، عليك إجراء شيئين:
- اضبط عنوان طلب HTTP
Accept-Encoding
علىgzip
. - عدِّل وكيل المستخدم ليتضمن السلسلة
gzip
.
يوضح نموذج عناوين HTTP أدناه هذه المتطلبات لتفعيل ضغط gzip:
Accept-Encoding: gzip User-Agent: my program (gzip)