مقدمه
این سند برای توسعهدهندگانی در نظر گرفته شده است که میخواهند برنامههایی بنویسند که با یوتیوب تعامل داشته باشند. این سند مفاهیم اولیه یوتیوب و خود API را توضیح میدهد. همچنین مروری بر عملکردهای مختلفی که API پشتیبانی میکند، ارائه میدهد.
قبل از شروع
برای دسترسی به کنسول API گوگل، درخواست کلید API و ثبت برنامه خود، به یک حساب کاربری گوگل نیاز دارید.
یک پروژه در کنسول توسعهدهندگان گوگل ایجاد کنید و اعتبارنامههای لازم را دریافت کنید تا برنامه شما بتواند درخواستهای API ارسال کند.
پس از ایجاد پروژه خود، مطمئن شوید که API داده یوتیوب یکی از سرویسهایی است که برنامه شما برای استفاده از آن ثبت شده است:
- به کنسول API بروید و پروژهای را که ثبت کردهاید انتخاب کنید.
- به صفحه APIهای فعالشده مراجعه کنید. در لیست APIها، مطمئن شوید که وضعیت برای YouTube Data API نسخه ۳ روشن است.
اگر برنامه شما از هر روش API که نیاز به مجوز کاربر دارد استفاده میکند، راهنمای احراز هویت را برای یادگیری نحوه پیادهسازی مجوز OAuth 2.0 مطالعه کنید.
برای سادهسازی پیادهسازی API خود، یک کتابخانه کلاینت انتخاب کنید.
با مفاهیم اصلی قالب داده JSON (نمادگذاری شیء جاوا اسکریپت) آشنا شوید. JSON یک قالب داده رایج و مستقل از زبان است که نمایش متنی سادهای از ساختارهای داده دلخواه را ارائه میدهد. برای اطلاعات بیشتر، به json.org مراجعه کنید.
منابع و انواع منابع
یک منبع، یک موجودیت دادهای منحصر به فرد با یک شناسه منحصر به فرد است. جدول زیر انواع مختلف منابعی را که میتوانید با استفاده از API با آنها تعامل داشته باشید، شرح میدهد.
| منابع | |
|---|---|
activity | حاوی اطلاعاتی درباره عملی است که یک کاربر خاص در سایت یوتیوب انجام داده است. اقدامات کاربر که در فیدهای فعالیت گزارش میشوند شامل رتبهبندی یک ویدیو، اشتراکگذاری یک ویدیو، علامتگذاری یک ویدیو به عنوان مورد علاقه و ارسال بولتن کانال و موارد دیگر است. |
channel | حاوی اطلاعاتی درباره یک کانال یوتیوب است. |
channelBanner | URL مورد استفاده برای تنظیم تصویر تازه آپلود شده به عنوان تصویر بنر برای یک کانال را مشخص میکند. |
channelSection | شامل اطلاعاتی درباره مجموعهای از ویدیوهایی است که یک کانال برای نمایش انتخاب کرده است. برای مثال، یک بخش میتواند آخرین آپلودهای کانال، محبوبترین آپلودها یا ویدیوهای یک یا چند لیست پخش را نمایش دهد. |
guideCategory | دستهبندیای را مشخص میکند که یوتیوب بر اساس محتوا یا سایر شاخصها، مانند محبوبیت، به کانالها مرتبط میکند. دستهبندیهای راهنما به دنبال سازماندهی کانالها به گونهای هستند که پیدا کردن محتوای مورد نظر برای کاربران یوتیوب آسانتر شود. در حالی که کانالها میتوانند با یک یا چند دستهبندی راهنما مرتبط باشند، تضمینی وجود ندارد که در هیچ دستهبندی راهنمایی قرار بگیرند. |
i18nLanguage | زبان برنامهای را که وبسایت یوتیوب از آن پشتیبانی میکند، مشخص میکند. زبان برنامه همچنین میتواند به عنوان زبان رابط کاربری (UI language) شناخته شود. |
i18nRegion | یک منطقه جغرافیایی را مشخص میکند که یک کاربر یوتیوب میتواند آن را به عنوان منطقه محتوای مورد نظر خود انتخاب کند. منطقه محتوا همچنین میتواند به عنوان یک منطقه محلی محتوا شناخته شود. |
playlist | یک لیست پخش یوتیوب را نشان میدهد. لیست پخش مجموعهای از ویدیوهاست که میتوان آنها را به ترتیب مشاهده کرد و با سایر کاربران به اشتراک گذاشت. |
playlistItem | منبعی مانند ویدیو را که بخشی از یک لیست پخش است، شناسایی میکند. منبع playlistItem همچنین شامل جزئیاتی است که نحوه استفاده از منبع موجود در لیست پخش را توضیح میدهد. |
search result | حاوی اطلاعاتی درباره یک ویدیو، کانال یا لیست پخش یوتیوب است که با پارامترهای جستجوی مشخص شده در یک درخواست API مطابقت دارد. در حالی که یک نتیجه جستجو به یک منبع منحصر به فرد قابل شناسایی، مانند یک ویدیو، اشاره میکند، دادههای دائمی خود را ندارد. |
subscription | حاوی اطلاعاتی درباره اشتراک کاربر یوتیوب است. اشتراک، کاربر را از اضافه شدن ویدیوهای جدید به کانال یا انجام یکی از اقدامات مختلف در یوتیوب، مانند آپلود ویدیو، امتیازدهی به ویدیو یا نظر دادن در مورد ویدیو، مطلع میکند. |
thumbnail | تصاویر کوچک مرتبط با یک منبع را شناسایی میکند. |
video | نشان دهنده یک ویدیوی یوتیوب است. |
videoCategory | دستهبندیای را که با ویدیوهای آپلود شده مرتبط بوده یا میتواند مرتبط باشد، شناسایی میکند. |
watermark | تصویری را که در طول پخش ویدیوهای یک کانال مشخص نمایش داده میشود، شناسایی میکند. صاحب کانال همچنین میتواند کانال هدفی را که تصویر به آن پیوند دارد، و همچنین جزئیات زمانبندی که تعیین میکند واترمارک در طول پخش ویدیو چه زمانی ظاهر میشود و مدت زمان قابل مشاهده بودن آن را مشخص کند، مشخص کند. |
توجه داشته باشید که در بسیاری از موارد، یک منبع شامل ارجاعاتی به منابع دیگر است. برای مثال، ویژگی snippet.resourceId.videoId یک منبع playlistItem یک منبع ویدیویی را شناسایی میکند که به نوبه خود حاوی اطلاعات کاملی در مورد ویدیو است. به عنوان مثال دیگر، یک نتیجه جستجو شامل یک ویژگی videoId ، playlistId یا channelId است که یک منبع ویدیو، لیست پخش یا کانال خاص را شناسایی میکند.
عملیات پشتیبانی شده
جدول زیر رایجترین متدهایی را که API پشتیبانی میکند نشان میدهد. برخی منابع همچنین از متدهای دیگری پشتیبانی میکنند که عملکردهای خاصتری را برای آن منابع انجام میدهند. به عنوان مثال، متد videos.rate امتیاز کاربر را به یک ویدیو مرتبط میکند و متد thumbnails.set تصویر کوچک یک ویدیو را در YouTube آپلود کرده و آن را به یک ویدیو مرتبط میکند.
| عملیات | |
|---|---|
list | لیستی از صفر یا چند منبع را بازیابی میکند ( GET ). |
insert | یک منبع جدید ( POST ) ایجاد میکند. |
update | یک منبع موجود را برای انعکاس دادهها در درخواست شما تغییر میدهد ( PUT ). |
delete | یک منبع خاص را حذف میکند ( DELETE ). |
این API در حال حاضر از روشهایی برای فهرست کردن هر یک از انواع منابع پشتیبانیشده پشتیبانی میکند و همچنین از عملیات نوشتن برای بسیاری از منابع نیز پشتیبانی میکند.
جدول زیر عملیاتی را که برای انواع مختلف منابع پشتیبانی میشوند، مشخص میکند. عملیاتی که منابع را درج، بهروزرسانی یا حذف میکنند، همیشه نیاز به مجوز کاربر دارند. در برخی موارد، متدهای 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، از جمله درخواستهای نامعتبر، حداقل هزینه سهمیه یک امتیازی را متحمل میشوند. میتوانید سهمیه موجود برای برنامه خود را در API Console پیدا کنید.
پروژههایی که API داده یوتیوب را فعال میکنند، سهمیه پیشفرض ۱۰،۰۰۰ واحد در روز دارند، مبلغی که برای اکثریت قریب به اتفاق کاربران API ما کافی است. سهمیه پیشفرض، که قابل تغییر است، به ما کمک میکند تا تخصیص سهمیه را بهینه کنیم و زیرساخت خود را به گونهای مقیاسبندی کنیم که برای کاربران API ما معنادارتر باشد. میتوانید میزان استفاده از سهمیه خود را در صفحه سهمیهها در کنسول API مشاهده کنید.
توجه: اگر به حد نصاب سهمیه رسیدید، میتوانید با تکمیل فرم درخواست تمدید سهمیه برای سرویسهای API یوتیوب، سهمیه اضافی درخواست کنید.
محاسبه میزان استفاده از سهمیه
گوگل با اختصاص هزینه به هر درخواست، میزان استفاده از سهمیه شما را محاسبه میکند. انواع مختلف عملیات، هزینههای سهمیه متفاوتی دارند. به عنوان مثال:
- یک عملیات خواندن که لیستی از منابع -- کانالها، ویدیوها، لیستهای پخش -- را بازیابی میکند، معمولاً ۱ واحد هزینه دارد.
- یک عملیات نوشتن که یک منبع را ایجاد، بهروزرسانی یا حذف میکند، معمولاً
50واحد هزینه دارد. - هزینه یک درخواست جستجو
100واحد است. - هزینه آپلود یک ویدیو
100واحد است.
جدول هزینههای سهمیه برای درخواستهای API، هزینه سهمیه هر روش API را نشان میدهد. با در نظر گرفتن این قوانین، میتوانید تعداد درخواستهایی را که برنامه شما میتواند در روز ارسال کند بدون اینکه از سهمیه شما تجاوز کند، تخمین بزنید.
منابع جزئی
این API امکان بازیابی منابع جزئی را فراهم میکند و در واقع آن را الزامی میداند تا برنامهها از انتقال، تجزیه و ذخیره دادههای غیرضروری اجتناب کنند. این رویکرد همچنین تضمین میکند که API از منابع شبکه، CPU و حافظه به طور کارآمدتری استفاده میکند.
این API از دو پارامتر درخواست پشتیبانی میکند که در بخشهای بعدی توضیح داده شدهاند و شما را قادر میسازند تا ویژگیهای منابعی را که باید در پاسخهای API گنجانده شوند، شناسایی کنید.
- پارامتر
partگروههایی از ویژگیها را که باید برای یک منبع برگردانده شوند، مشخص میکند. - پارامتر
fieldsپاسخ API را فیلتر میکند تا فقط ویژگیهای خاصی را در بخشهای منبع درخواستی برگرداند.
نحوه استفاده از پارامتر part
پارامتر part یک پارامتر ضروری برای هر درخواست API است که یک منبع را بازیابی یا برمیگرداند. این پارامتر یک یا چند ویژگی منبع سطح بالا (غیر تو در تو) را مشخص میکند که باید در پاسخ API گنجانده شوند. به عنوان مثال، یک منبع video دارای بخشهای زیر است:
-
snippet -
contentDetails -
fileDetails -
player -
processingDetails -
recordingDetails -
statistics -
status -
suggestions -
topicDetails
همه این بخشها، اشیایی هستند که حاوی ویژگیهای تو در تو هستند و میتوانید این اشیا را به عنوان گروههایی از فیلدهای فراداده در نظر بگیرید که سرور API ممکن است (یا ممکن است) بازیابی کند. به این ترتیب، پارامتر part از شما میخواهد که اجزای منبعی را که برنامه شما در واقع از آنها استفاده میکند، انتخاب کنید. این الزام دو هدف کلیدی را دنبال میکند:
- این قابلیت با جلوگیری از صرف وقت سرور API برای بازیابی فیلدهای فرادادهای که برنامه شما از آنها استفاده نمیکند، تأخیر را کاهش میدهد.
- با کاهش (یا حذف) میزان دادههای غیرضروری که برنامه شما ممکن است بازیابی کند، استفاده از پهنای باند را کاهش میدهد.
با گذشت زمان، با اضافه شدن بخشهای بیشتر به منابع، این مزایا فقط افزایش مییابند، زیرا برنامه شما دیگر ویژگیهای جدیدی را که از آنها پشتیبانی نمیکند، درخواست نخواهد کرد.
نحوه استفاده از پارامتر fields
پارامتر fields پاسخ API را فیلتر میکند، که فقط شامل بخشهای منبع مشخص شده در مقدار پارامتر part است، به طوری که پاسخ فقط شامل مجموعهای خاص از فیلدها میشود. پارامتر fields به شما امکان میدهد ویژگیهای تو در تو را از یک پاسخ API حذف کنید و در نتیجه استفاده از پهنای باند خود را بیشتر کاهش دهید. (از پارامتر part نمیتوان برای فیلتر کردن ویژگیهای تو در تو از یک پاسخ استفاده کرد.)
قوانین زیر، سینتکس پشتیبانیشده برای مقدار پارامتر fields را توضیح میدهند که تا حدودی مبتنی بر سینتکس XPath است:
- برای انتخاب چندین فیلد از یک لیست جدا شده با کاما (
fields=a,b) استفاده کنید. - برای مشخص کردن همه فیلدها از علامت ستاره (
fields=*) به عنوان wildcard استفاده کنید. - از پرانتز (
fields=a(b,c)) برای مشخص کردن گروهی از ویژگیهای تو در تو که در پاسخ API گنجانده خواهند شد، استفاده کنید. - برای مشخص کردن یک ویژگی تو در تو، از یک اسلش (
fields=a/b) استفاده کنید.
در عمل، این قوانین اغلب به چندین مقدار پارامتر fields مختلف اجازه میدهند تا پاسخ API یکسانی را بازیابی کنند. برای مثال، اگر میخواهید شناسه، عنوان و موقعیت آیتم لیست پخش را برای هر آیتم در یک لیست پخش بازیابی کنید، میتوانید از هر یک از مقادیر زیر استفاده کنید:
-
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 استفاده کنید تا مطمئن شوید که پاسخهای API فقط شامل دادههایی هستند که برنامه شما استفاده میکند:
- مثال ۱ یک منبع ویدیویی را برمیگرداند که شامل چهار بخش و همچنین ویژگیهای
kindوetagاست. - مثال ۲ یک منبع ویدیویی را برمیگرداند که شامل دو بخش و همچنین ویژگیهای
kindوetagاست. - مثال ۳ یک منبع ویدیویی را برمیگرداند که شامل دو بخش است اما ویژگیهای
kindوetagرا شامل نمیشود. - مثال ۴ یک منبع ویدیویی را برمیگرداند که شامل دو بخش است اما
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 avideoresource 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 thepartparameter value so that thecontentDetailsandstatusproperties 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 thefieldsparameter to remove allkindandetagproperties 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 thefieldsparameter from example 3 so that in the API response, each video resource'ssnippetobject only includes thechannelId,title, andcategoryIdproperties. 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 ، به برنامهها اجازه میدهند تا به نسخه خاصی از یک منبع API خاص اشاره کنند. این منبع میتواند کل یک فید یا یک آیتم در آن فید باشد. این قابلیت از موارد استفاده زیر پشتیبانی میکند:
ذخیره سازی و بازیابی مشروط - برنامه شما میتواند منابع API و ETag های آنها را ذخیره کند. سپس، هنگامی که برنامه شما دوباره یک منبع ذخیره شده را درخواست میکند، ETag مرتبط با آن منبع را مشخص میکند. اگر منبع تغییر کرده باشد، API منبع اصلاح شده و ETag مرتبط با آن نسخه از منبع را برمیگرداند. اگر منبع تغییر نکرده باشد، API یک پاسخ HTTP 304 (
Not Modified) برمیگرداند که نشان میدهد منبع تغییر نکرده است. برنامه شما میتواند با ارائه منابع ذخیره شده به این روش، تأخیر و استفاده از پهنای باند را کاهش دهد.کتابخانههای کلاینت برای APIهای گوگل در پشتیبانی از ETagها متفاوت هستند. به عنوان مثال، کتابخانه کلاینت جاوا اسکریپت از طریق یک لیست سفید برای هدرهای درخواست مجاز که شامل
If-MatchوIf-None-Matchمیشود، از ETagها پشتیبانی میکند. این لیست سفید امکان ذخیره سازی معمولی مرورگر را فراهم میکند، به طوری که اگر ETag یک منبع تغییر نکرده باشد، منبع میتواند از حافظه پنهان مرورگر ارائه شود. از سوی دیگر، کلاینت Obj-C از ETagها پشتیبانی نمیکند.محافظت در برابر رونویسیهای ناخواسته تغییرات - ETag ها به اطمینان از این امر کمک میکنند که چندین کلاینت API سهواً تغییرات یکدیگر را رونویسی نکنند. هنگام بهروزرسانی یا حذف یک منبع، برنامه شما میتواند ETag منبع را مشخص کند. اگر ETag با جدیدترین نسخه آن منبع مطابقت نداشته باشد، درخواست API با شکست مواجه میشود.
استفاده از ETag ها در برنامه شما چندین مزیت دارد:
- این API به درخواستهای مربوط به منابع ذخیرهشده اما بدون تغییر، سریعتر پاسخ میدهد و تأخیر و استفاده از پهنای باند کمتری را به همراه دارد.
- برنامه شما سهواً تغییرات ایجاد شده در منبعی که از یک کلاینت API دیگر ایجاد شده است را بازنویسی نخواهد کرد.
Google APIs Client Library for JavaScript از هدرهای درخواست HTTP If-Match و If-None-Match پشتیبانی میکند و در نتیجه ETagها را قادر میسازد تا در چارچوب ذخیرهسازی معمولی مرورگر کار کنند.
استفاده از gzip
همچنین میتوانید با فعال کردن فشردهسازی gzip، پهنای باند مورد نیاز برای هر پاسخ API را کاهش دهید. اگرچه برنامه شما برای خارج کردن پاسخهای API از حالت فشرده به زمان CPU بیشتری نیاز دارد، اما مزیت مصرف کمتر منابع شبکه معمولاً از این هزینه بیشتر است.
برای دریافت پاسخ کدگذاری شده با gzip، باید دو کار انجام دهید:
- هدر درخواست HTTP
Accept-Encodingرا رویgzipتنظیم کنید. - عامل کاربر خود را طوری تغییر دهید که شامل رشته
gzipباشد.
هدرهای HTTP نمونه زیر این الزامات را برای فعال کردن فشردهسازی gzip نشان میدهند:
Accept-Encoding: gzip User-Agent: my program (gzip)