این سند نشان میدهد که چگونه میتوانید تماسهای API را با هم دستهبندی کنید تا تعداد اتصالهایی که مشتری شما باید برقرار کند را کاهش دهید. بچینگ می تواند با کاهش رفت و برگشت شبکه و افزایش توان عملیاتی، کارایی برنامه را بهبود بخشد.
نمای کلی
هر اتصالی که مشتری شما ایجاد می کند منجر به مقدار معینی سربار می شود. Google Slides API از دستهبندی پشتیبانی میکند تا به مشتری شما امکان میدهد چندین شی درخواست را که هر کدام یک نوع درخواست را برای انجام مشخص میکنند، در یک درخواست دستهای قرار دهد. یک درخواست دسته ای می تواند با ترکیب چندین درخواست فرعی در یک تماس با سرور، عملکرد را افزایش دهد و یک پاسخ را بازیابی کند.
ما کاربران را تشویق می کنیم که همیشه چندین درخواست را با هم دسته بندی کنند. در اینجا چند نمونه از موقعیت هایی وجود دارد که می توانید از بچینگ استفاده کنید:
- شما به تازگی استفاده از API را شروع کرده اید و داده های زیادی برای آپلود دارید.
- شما باید متادیتا یا ویژگیهایی مانند قالببندی را روی چندین شیء بهروزرسانی کنید.
- شما باید بسیاری از اشیاء را حذف کنید.
محدودیت ها، مجوزها، و ملاحظات وابستگی
در اینجا لیستی از موارد دیگری وجود دارد که باید هنگام بهروزرسانی دستهای در نظر بگیرید:
- هر درخواست دستهای، از جمله همه درخواستهای فرعی، به عنوان یک درخواست API برای محدودیت استفاده شما محاسبه میشود.
- درخواست دسته ای یک بار احراز هویت می شود. این احراز هویت واحد برای همه اشیاء بهروزرسانی دستهای در درخواست اعمال میشود.
- سرور درخواست های فرعی را به همان ترتیبی که در درخواست دسته ای ظاهر می شوند پردازش می کند. درخواستهای فرعی بعدی میتواند به اقدامات انجام شده در طول درخواستهای فرعی قبلی بستگی داشته باشد. به عنوان مثال، در همان درخواست دسته ای، کاربران می توانند متنی را در یک سند موجود وارد کنند و سپس به آن استایل دهند.
جزئیات دسته
یک درخواست دسته ای شامل یک فراخوانی متد batchUpdate
با چندین درخواست فرعی برای افزودن و سپس فرمت یک ارائه است.
هر درخواست قبل از اعمال تایید می شود. همه درخواستهای فرعی در بهروزرسانی دستهای به صورت اتمی اعمال میشوند. یعنی اگر هر درخواستی معتبر نباشد، کل به روز رسانی ناموفق است و هیچ یک از تغییرات (بالقوه وابسته) اعمال نمی شود.
برخی از درخواستها پاسخهایی را با اطلاعات درخواستهای اعمال شده ارائه میدهند. برای مثال، تمام درخواستهای بهروزرسانی دستهای برای افزودن اشیا، پاسخها را برمیگردانند تا بتوانید به ابردادههای شی جدید اضافهشده، مانند شناسه یا عنوان دسترسی داشته باشید.
با این رویکرد، میتوانید کل سند Google را با استفاده از یک درخواست بهروزرسانی دستهای API با چندین درخواست فرعی بسازید.
فرمت درخواست دسته ای
درخواست یک درخواست JSON منفرد است که شامل چندین درخواست فرعی تودرتو با یک ویژگی مورد نیاز است: requests
. درخواست ها در آرایه ای از درخواست های فردی ساخته می شوند. هر درخواست از JSON برای نمایش شی درخواست و حاوی ویژگی های آن استفاده می کند.
قالب یک پاسخ دسته ای
فرمت پاسخ برای درخواست دسته ای مشابه فرمت درخواست است. پاسخ سرور حاوی یک پاسخ کامل از شیء پاسخ واحد است.
ویژگی اصلی شیء JSON replies
نام دارد. پاسخها در یک آرایه برگردانده میشوند و هر پاسخ به یکی از درخواستها همان ترتیب فهرست درخواست مربوطه را اشغال میکند. برخی از درخواست ها پاسخی ندارند و پاسخ در آن شاخص آرایه خالی است.
مثال
نمونه کد زیر استفاده از دستهبندی با Slides API را نشان میدهد.
درخواست کنید
این درخواست دستهای مثال نشان میدهد که چگونه:
با استفاده از روش
CreateSlideRequest
، یک منبعpresentations.pages
به ارائه موجود، باinsertionIndex
1
اضافه کنید.با استفاده از روش
CreateShapeRequest
یکshapeType
از نوعTEXT_BOX
به اسلاید جدید اضافه کنید.متن "Hello World" را با استفاده از روش
InsertTextRequest
در فیلد جدید وارد کنید.
{ "requests":[ { "createSlide":{ "insertionIndex":1, "objectId":"newSlide" } }, { "createShape":{ "elementProperties":{ "pageObjectId":"newSlide", "size":{ "height":{ "magnitude":50, "unit":"PT" }, "width":{ "magnitude":200, "unit":"PT" } } }, "shapeType":"TEXT_BOX", "objectId":"newTextBox" } }, { "insertText":{ "objectId":"newTextBox", "text":"Hello World" } } ] }
پاسخ
این نمونه پاسخ دسته ای اطلاعاتی را در مورد نحوه اعمال هر درخواست فرعی در درخواست دسته ای نمایش می دهد. توجه داشته باشید که روش InsertTextRequest
حاوی پاسخی نیست، بنابراین مقدار شاخص آرایه در [2] از پرانتزهای مجعد خالی تشکیل شده است. درخواست دسته ای خاصیت WriteControl
را نشان می دهد که نحوه اجرای درخواست های نوشتن را نشان می دهد.
{ "requiredRevisionId": ID "presentationId": "", "replies":[ { "createSlide":{ "objectId":"newSlide" } }, { "createShape":{ "objectId":"newTextBox" } }, { } ], "writeControl":{ "requiredRevisionId": REVISION_ID } }