این سند پروتکل مورد استفاده توسط Google Data API را توصیف می کند، از جمله اطلاعاتی در مورد ظاهر یک پرس و جو، ظاهر نتایج و غیره.
برای اطلاعات بیشتر در مورد Google Data API، به سند راهنمای برنامهنویس دادههای Google و راهنمای پروتکل مراجعه کنید.
حضار
این سند برای هر کسی در نظر گرفته شده است که می خواهد جزئیات قالب و پروتکل XML مورد استفاده توسط Google Data API را درک کند.
اگر فقط می خواهید کدی بنویسید که از API های سرویس گیرنده Google Data استفاده می کند، پس نیازی به دانستن این جزئیات ندارید. در عوض، می توانید از کتابخانه های مشتری خاص زبان استفاده کنید.
اما اگر می خواهید پروتکل را درک کنید، این سند را بخوانید. برای مثال، ممکن است بخواهید این سند را بخوانید تا در انجام هر یک از کارهای زیر به شما کمک کند:
- ارزیابی معماری Google Data
- کدگذاری با استفاده از پروتکل بدون استفاده از کتابخانه های سرویس گیرنده Google Data ارائه شده
- نوشتن یک کتابخانه مشتری به زبان جدید
این سند فرض میکند که شما اصول XML، فضاهای نام، فیدهای اشتراکی، و درخواستهای GET
، POST
، PUT
، و DELETE
در HTTP و همچنین مفهوم HTTP از یک "منبع" را درک میکنید. برای اطلاعات بیشتر در مورد این موارد، به بخش منابع اضافی این سند مراجعه کنید.
این سند به هیچ زبان برنامه نویسی خاصی متکی نیست. شما می توانید پیام های Google Data را با استفاده از هر زبان برنامه نویسی که به شما امکان می دهد درخواست های HTTP و تجزیه پاسخ های مبتنی بر XML را ارسال و دریافت کنید.
جزئیات پروتکل
این بخش قالب سند Google Data و نحو پرس و جو را توضیح می دهد.
فرمت سند
Google Data، Atom، و RSS 2.0 همگی از یک مدل داده اولیه استفاده می کنند: محفظه ای که هم برخی از داده های جهانی و هم هر تعداد ورودی را در خود جای می دهد. برای هر پروتکل، قالب توسط یک طرحواره پایه تعریف می شود، اما می توان آن را با استفاده از فضاهای نام خارجی گسترش داد.
APIهای Google Data میتوانند از فرمت Atom syndication (هم برای خواندن و هم برای نوشتن) یا فرمت RSS (فقط برای خواندن) استفاده کنند.
Atom قالب پیش فرض Google Data است. برای درخواست پاسخ در قالب RSS، از پارامتر /alt=rss/
استفاده کنید. برای اطلاعات بیشتر، به درخواستهای درخواست مراجعه کنید.
وقتی دادههایی را در قالب RSS درخواست میکنید، Google Data یک فید (یا دیگر نمایش منبع) را در قالب RSS ارائه میکند. اگر ویژگی RSS معادلی برای یک ویژگی داده Google وجود نداشته باشد، Google Data از ویژگی Atom استفاده میکند و آن را با یک فضای نام مناسب برچسبگذاری میکند تا نشان دهد که پسوند RSS است.
توجه : اکثر فیدهای Google Data با فرمت Atom از فضای نام Atom به عنوان فضای نام پیشفرض با تعیین ویژگی xmlns
در عنصر فید استفاده میکنند. برای نمونه هایی از نحوه انجام این کار، بخش مثال ها را ببینید. بنابراین، مثالهای موجود در این سند به طور صریح atom:
برای عناصر موجود در فید با فرمت Atom را مشخص نمیکنند.
جداول زیر نمایش Atom و RSS عناصر طرحواره را نشان می دهد. تمام داده هایی که در این جداول ذکر نشده اند به عنوان XML ساده در نظر گرفته می شوند و در هر دو نمایش یکسان نشان داده می شوند. مگر اینکه خلاف آن مشخص شده باشد، عناصر XML در یک ستون معین در فضای نام مربوط به آن ستون هستند. این خلاصه از نماد استاندارد XPath استفاده می کند: به ویژه، اسلش ها سلسله مراتب عنصر را نشان می دهند و علامت @ نشان دهنده ویژگی یک عنصر است.
در هر یک از جداول زیر موارد برجسته شده الزامی است.
جدول زیر عناصر یک فید Google Data را نشان می دهد:
مورد طرح خوراک | نمایندگی اتم | نمایندگی RSS |
---|---|---|
عنوان فید | /feed/title | /rss/channel/title |
شناسه فید | /feed/id | /rss/channel/atom:id |
پیوند HTML را تغذیه کنید | /feed/link[@rel="alternate"] \[@type="text/html"]/@href | /rss/channel/link |
شرح فید | /feed/subtitle | /rss/channel/description |
زبان فید | /feed/@xml:lang | /rss/channel/language |
حق نشر فید | /feed/rights | /rss/channel/copyright |
نویسنده فید | (در موارد خاص لازم است؛ مشخصات Atom را ببینید.) | /rss/channel/managingEditor |
تاریخ آخرین به روز رسانی خوراک | /feed/updated (فرمت RFC 3339) | /rss/channel/lastBuildDate (فرمت RFC 822) |
دسته خوراک | /feed/category/@term | /rss/channel/category |
طرح طبقه بندی خوراک | /feed/category/@scheme | /rss/channel/category/@domain |
مولد خوراک | /feed/generator /feed/generator/@uri | /rss/channel/generator |
نماد فید | /feed/icon | /rss/channel/image/url (مگر اینکه یک لوگو نیز وجود داشته باشد، در این صورت نماد در فید گنجانده نشده است) |
آرم فید | /feed/logo | /rss/channel/image/url |
جدول زیر عناصر یک فید نتایج جستجوی Google Data را نشان می دهد. توجه داشته باشید که Google Data برخی از عناصر OpenSearch 1.1 Response را در فیدهای نتایج جستجو نشان می دهد.
مورد طرح فید نتایج جستجو | نمایندگی اتم | نمایندگی RSS/OpenSearch |
---|---|---|
تعداد نتایج جستجو | /feed/openSearch:totalResults | /rss/channel/openSearch:totalResults |
فهرست شروع نتایج جستجو | /feed/openSearch:startIndex | /rss/channel/openSearch:startIndex |
تعداد نتایج جستجو در هر صفحه | /feed/openSearch:itemsPerPage | /rss/channel/openSearch:itemsPerPage |
جدول زیر عناصر ورودی Google Data را نشان می دهد:
آیتم طرحواره ورودی | نمایندگی اتم | نمایندگی RSS |
---|---|---|
شناسه ورودی | /feed/entry/id | /rss/channel/item/guid |
شناسه نسخه ورودی | به صورت اختیاری در EditURI تعبیه شده است (به بخش همزمانی خوش بینانه این سند مراجعه کنید). | - |
عنوان ورودی | /feed/entry/title | /rss/channel/item/title |
لینک ورود | /feed/entry/link | /rss/channel/item/link /rss/channel/item/enclosure /rss/channel/item/comments |
خلاصه ورودی | (در موارد خاص لازم است؛ مشخصات Atom را ببینید.) | /rss/channel/item/atom:summary |
محتوای ورودی | (اگر عنصر محتوا وجود ندارد، ورودی باید حداقل یک عنصر | /rss/channel/item/description |
نویسنده ورودی | (در موارد خاص لازم است؛ مشخصات Atom را ببینید.) | /rss/channel/item/author |
دسته ورودی | /feed/entry/category/@term | /rss/channel/item/category |
طرح رده ورودی | /feed/entry/category/@scheme | /rss/channel/item/category/@domain |
تاریخ انتشار ورودی | /feed/entry/published (RFC 3339) | /rss/channel/item/pubDate (RFC 822) |
تاریخ بهروزرسانی ورودی | /feed/entry/updated (RFC 3339) | /rss/channel/item/atom:updated (RFC 3339) |
پرس و جوها
این بخش نحوه استفاده از سیستم پرس و جو را توضیح می دهد.
اصول طراحی مدل پرس و جو
مدل پرس و جو عمداً بسیار ساده است. اصول اساسی عبارتند از:
- کوئریها بهعنوان URI HTTP بیان میشوند، نه بهعنوان سرصفحه HTTP یا بخشی از بار. یکی از مزایای این روش این است که می توانید به یک پرس و جو پیوند دهید.
- محمول ها به یک آیتم محدود می شوند. بنابراین، هیچ راهی برای ارسال پرس و جوی همبستگی مانند "یافتن تمام ایمیل های افرادی که امروز حداقل 10 ایمیل برای من ارسال کرده اند" وجود ندارد.
- مجموعه ای از ویژگی هایی که پرس و جوها می توانند بر آنها گزاره کنند بسیار محدود است. اکثر پرس و جوها صرفاً عبارت جستجوی متن کامل هستند.
- سفارش نتیجه به اجرا بستگی دارد.
- پروتکل به طور طبیعی قابل توسعه است. اگر میخواهید محمولههای اضافی یا مرتبسازی را در سرویس خود آشکار کنید، میتوانید این کار را به راحتی از طریق معرفی پارامترهای جدید انجام دهید.
درخواست های پرس و جو
یک کلاینت با صدور یک درخواست HTTP GET
از سرویس Google Data درخواست می کند. URI پرس و جو شامل URI منبع (به نام FeedURI در Atom) و به دنبال پارامترهای پرس و جو است. اکثر پارامترهای پرس و جو به عنوان پارامترهای URL سنتی ?name=value[&...]
نشان داده می شوند. پارامترهای دسته به طور متفاوتی اداره می شوند. زیر را ببینید.
به عنوان مثال، اگر FeedURI http://www.example.com/feeds/jo
باشد، ممکن است یک درخواست با URI زیر ارسال کنید:
http://www.example.com/feeds/jo?q=Darcy&updated-min=2005-04-19T15:30:00Z
خدمات Google Data از HTTP Conditional GET
پشتیبانی می کند. آنها هدر پاسخ آخرین اصلاح را بر اساس مقدار عنصر <atom:updated>
در فید یا ورودی برگشتی تنظیم می کنند. مشتری می تواند این مقدار را به عنوان مقدار سرصفحه درخواست If-Modified-Since برگرداند تا در صورت عدم تغییر محتوا از بازیابی مجدد آن جلوگیری کند. اگر محتوا از زمان If-Modified-Since تغییر نکرده باشد، سرویس Google Data یک پاسخ HTTP 304 (تغییر نشده) را برمیگرداند.
یک سرویس داده Google باید از جستارهای دسته بندی و جستارهای alt
پشتیبانی کند. پشتیبانی از سایر پارامترها اختیاری است. پاس دادن یک پارامتر استاندارد که توسط یک سرویس مشخص قابل درک نیست منجر به پاسخ 403 Forbidden
می شود. ارسال یک پارامتر غیر استاندارد پشتیبانی نشده منجر به پاسخ 400 Bad Request
می شود. برای اطلاعات در مورد سایر کدهای وضعیت، به بخش کدهای وضعیت HTTP این سند مراجعه کنید.
پارامترهای پرس و جو استاندارد در جدول زیر خلاصه شده است. همه مقادیر پارامتر باید URL کدگذاری شوند.
پارامتر | معنی | یادداشت |
---|---|---|
q | رشته پرس و جو تمام متن |
|
/-/ category | فیلتر دسته |
|
category | فیلتر دسته |
|
author | نویسنده ورودی |
|
alt | نوع نمایندگی جایگزین |
|
updated-min , updated-max | محدودیت ها در تاریخ به روز رسانی ورودی |
|
published-min ، published-max | محدوده در تاریخ انتشار ورودی |
|
start-index | شاخص 1-مبتنی بر اولین نتیجه ای که باید بازیابی شود |
|
max-results | حداکثر تعداد نتایجی که باید بازیابی شوند | برای هر سرویسی که دارای مقدار max-results پیشفرض است (برای محدود کردن اندازه فید پیشفرض)، اگر میخواهید کل فید را دریافت کنید، میتوانید تعداد بسیار زیادی را مشخص کنید. |
شناسه ورود | شناسه یک ورودی خاص که باید بازیابی شود |
|
درباره پرس و جوهای دسته بندی
ما تصمیم گرفتیم یک قالب کمی غیرعادی برای جستارهای دسته بندی مشخص کنیم. به جای پرس و جو مانند زیر:
http://example.com/jo?category=Fritz&category=2006
ما استفاده می کنیم:
http://example.com/jo/-/Fritz/2006
این رویکرد یک منبع را بدون استفاده از پارامترهای پرس و جو شناسایی می کند و URI های تمیزتری تولید می کند. ما این رویکرد را برای دستهها انتخاب کردیم زیرا فکر میکنیم که پرسوجوهای دستهبندی رایجترین پرسشها خواهند بود.
اشکال این رویکرد این است که ما از شما میخواهیم /-/
در جستارهای دستهبندی استفاده کنید، به طوری که سرویسهای داده Google میتوانند جستارهای دستهبندی را از سایر URI منابع، مانند http://example.com/jo/MyPost/comments
متمایز کنند.
پاسخ های پرس و جو
بسته به پارامترهای درخواست، کوئری ها یک فید Atom، یک ورودی Atom یا یک فید RSS را برمی گرداند.
نتایج پرس و جو حاوی عناصر OpenSearch زیر هستند که مستقیماً در زیر عنصر <feed>
یا عنصر <channel>
قرار دارند (بسته به اینکه آیا نتایج Atom یا RSS هستند):
-
openSearch:totalResults
- تعداد کل نتایج جستجو برای پرس و جو (الزاما همه در فید نتایج موجود نیستند).
-
openSearch:startIndex
- شاخص 1 بر اساس اولین نتیجه.
-
openSearch:itemsPerPage
- حداکثر تعداد مواردی که در یک صفحه ظاهر می شوند. این به مشتریان اجازه می دهد تا پیوندهای مستقیم به هر مجموعه ای از صفحات بعدی ایجاد کنند. با این حال، برای خطر احتمالی در استفاده از این شماره، به یادداشت مربوط به
start-index
در جدول در بخش درخواستهای پرس و جو مراجعه کنید.
فید پاسخ Atom و ورودیها ممکن است شامل هر یک از عناصر Atom و Google Data زیر باشد (و همچنین سایر موارد ذکر شده در مشخصات Atom):
-
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="..."/>
- URI را مشخص می کند که در آن می توان فید کامل Atom را بازیابی کرد.
-
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="..."/>
- PostURI فید Atom (جایی که می توان ورودی های جدید پست کرد) را مشخص می کند.
-
<link rel="self" type="..." href="..."/>
- شامل URI این منبع است. مقدار ویژگی
type
به فرمت درخواستی بستگی دارد. اگر هیچ داده ای در این میان تغییر نکند، ارسال یک GET دیگر به این URI همان پاسخ را برمی گرداند. -
<link rel="previous" type="application/atom+xml" href="..."/>
- URI قسمت قبلی مجموعه نتایج پرس و جو را در صورتی که تکه شده باشد مشخص می کند.
-
<link rel="next" type="application/atom+xml" href="..."/>
- URI قسمت بعدی مجموعه نتایج پرس و جو را در صورتی که تکه شده باشد مشخص می کند.
-
<link rel="edit" type="application/atom+xml" href="..."/>
- EditURI ورودی Atom را مشخص می کند (جایی که یک ورودی به روز شده را ارسال می کنید).
در اینجا یک نمونه بدنه پاسخ، در پاسخ به یک عبارت جستجو آمده است:
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"> <id>http://www.example.com/feed/1234.1/posts/full</id> <updated>2005-09-16T00:42:06Z</updated> <title type="text">Books and Romance with Jo and Liz</title> <link rel="alternate" type="text/html" href="http://www.example.net/"/> <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <link rel="self" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <generator version="1.0" uri="http://www.example.com">Example Generator Engine</generator> <openSearch:totalResults>2</openSearch:totalResults> <openSearch:startIndex>0</openSearch:startIndex> <entry> <id>http://www.example.com/feed/1234.1/posts/full/4521614025009481151</id> <published>2005-01-09T08:00:00Z</published> <updated>2005-01-09T08:00:00Z</updated> <category scheme="http://www.example.com/type" term="blog.post"/> <title type="text">This is the title of entry 1009</title> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">This is the entry body of entry 1009</div> </content> <link rel="alternate" type="text/html" href="http://www.example.com/posturl"/> <link rel="edit" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full/4521614025009481151"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> </entry> <entry> <id>http://www.example.com/feed/1234.1/posts/full/3067545004648931569</id> <published>2005-01-07T08:00:00Z</published> <updated>2005-01-07T08:02:00Z</updated> <category scheme="http://www.example.com/type" term="blog.post"/> <title type="text">This is the title of entry 1007</title> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">This is the entry body of entry 1007</div> </content> <link rel="alternate" type="text/html" href="http://www.example.com/posturl"/> <link rel="edit" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full/3067545004648931569"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> </entry> </feed>
اگر فید درخواستی در قالب Atom باشد، اگر هیچ پارامتر پرس و جو مشخص نشده باشد، و اگر نتیجه شامل تمام ورودی ها نباشد، عنصر زیر در فید سطح بالا درج می شود: <link rel="next" type="application/atom+xml" href="..."/>
. به فید حاوی مجموعه ورودی های بعدی اشاره می کند. مجموعههای بعدی حاوی عنصر <link rel="previous" type="application/atom+xml" href="..."/>
مربوطه هستند. با دنبال کردن تمام پیوندهای بعدی ، یک مشتری می تواند تمام ورودی ها را از یک فید بازیابی کند.
کدهای وضعیت HTTP
جدول زیر معنی کدهای وضعیت HTTP مختلف را در زمینه خدمات Google Data توضیح می دهد.
کد | توضیح |
---|---|
200 باشه | بدون خطا. |
201 ایجاد شد | ایجاد یک منبع موفقیت آمیز بود. |
304 تغییر نکرده است | منبع از زمان مشخص شده در هدر If-Modified-Since درخواست تغییر نکرده است. |
400 درخواست بد | URI یا هدر درخواست نامعتبر یا پارامتر غیر استاندارد پشتیبانی نشده. |
401 غیر مجاز | مجوز لازم است. |
403 ممنوع | پارامتر استاندارد پشتیبانی نشده، یا احراز هویت یا مجوز انجام نشد. |
404 پیدا نشد | منبع (مانند فید یا ورودی) یافت نشد. |
409 درگیری | شماره نسخه مشخص شده با آخرین شماره نسخه منبع مطابقت ندارد. |
500 خطای سرور داخلی | خطای داخلی. این کد پیش فرضی است که برای تمام خطاهای شناسایی نشده استفاده می شود. |
همزمانی خوش بینانه (نسخه سازی)
گاهی اوقات مهم است که اطمینان حاصل شود که چندین مشتری سهواً تغییرات یکدیگر را بازنویسی نمی کنند. این به راحتی با اطمینان از اینکه نسخه فعلی ورودی که یک کلاینت در حال تغییر آن است، با نسخه ای که مشتری بر اساس آن تغییرات را انجام می دهد، انجام می شود. اگر کلاینت دوم قبل از اولین کلاینت بهروزرسانی انجام دهد، بهروزرسانی مشتری اول رد میشود، زیرا مشتری اول دیگر تغییرات خود را بر اساس آخرین نسخه انجام نمیدهد.
در فیدهای Google Data که از نسخهسازی پشتیبانی میکنند، با افزودن شناسه نسخه به EditURI هر ورودی، به این معناها دست پیدا میکنیم. توجه داشته باشید که فقط EditURI تحت تأثیر قرار می گیرد، نه شناسه ورودی. در این طرح، هر به روز رسانی EditURI ورودی را تغییر می دهد، بنابراین تضمین می کند که به روز رسانی های بعدی بر اساس نسخه اصلی شکست می خورند. البته حذفها با توجه به این ویژگی مشابه بهروزرسانیها هستند. اگر حذفی را با شماره نسخه قدیمی ارسال کنید، حذف انجام نمی شود.
همه فیدهای Google Data از همزمانی خوش بینانه پشتیبانی نمی کنند. در یک فید که از آن پشتیبانی می کند، اگر سرور تضاد نسخه را در PUT یا DELETE تشخیص دهد، سرور با 409 Conflict
پاسخ می دهد. بدنه پاسخ شامل وضعیت فعلی ورودی (یک سند ورودی اتم) است. به مشتری توصیه می شود با استفاده از EditURI از پاسخ 409، تضاد را حل کند و درخواست را دوباره ارسال کند.
یادداشت های انگیزشی و طراحی
این رویکرد به همزمانی خوشبینانه به ما امکان میدهد بدون نیاز به نشانهگذاری جدید برای شناسههای نسخه، معنایی را که میخواهیم پیادهسازی کنیم، که پاسخهای Google Data را با نقاط پایانی غیر Google Data Atom سازگار میکند.
به جای تعیین شناسههای نسخه، میتوانستیم به مهر زمانی بهروزرسانی در هر ورودی نگاه کنیم ( /atom:entry/atom:updated
). با این حال، دو مشکل در استفاده از مهر زمانی بهروزرسانی وجود دارد:
- این فقط برای به روز رسانی و نه حذف کار می کند.
- این برنامهها را مجبور میکند از مقادیر تاریخ/زمان بهعنوان شناسههای نسخه استفاده کنند، که این امر بهروزرسانی Google Data را در بالای بسیاری از فروشگاههای داده موجود دشوارتر میکند.
احراز هویت
هنگامی که یک سرویس گیرنده سعی می کند به یک سرویس دسترسی پیدا کند، ممکن است نیاز داشته باشد که اعتبار کاربر را به سرویس ارائه دهد تا نشان دهد که کاربر صلاحیت انجام عمل مورد نظر را دارد.
رویکردی که یک کلاینت باید برای احراز هویت استفاده کند به نوع مشتری بستگی دارد:
- یک برنامه دسکتاپ باید از یک سیستم احراز هویت خاص گوگل به نام احراز هویت حساب برای برنامه های نصب شده (همچنین به عنوان "ClientLogin" شناخته می شود) استفاده کند. (کلاینت های مبتنی بر وب نباید از این سیستم استفاده کنند.)
- یک کلاینت مبتنی بر وب، مانند یک فرانت اند شخص ثالث برای سرویس Google Data، باید از یک سیستم احراز هویت خاص Google به نام Account Authentication Proxy برای برنامه های مبتنی بر وب (همچنین به عنوان "AuthSub" شناخته می شود) استفاده کند.
در سیستم ClientLogin، سرویس گیرنده دسکتاپ از کاربر اعتبارنامه خود را می خواهد و سپس آن اعتبار را به سیستم احراز هویت گوگل ارسال می کند.
اگر احراز هویت با موفقیت انجام شود، سیستم احراز هویت رمزی را برمیگرداند که مشتری متعاقباً هنگام ارسال درخواستهای Google Data از آن (در سرصفحه مجوز HTTP) استفاده میکند.
اگر احراز هویت ناموفق باشد، سرور یک کد وضعیت 403 Forbidden را به همراه یک هدر WWW-Authenticate که حاوی چالش قابل اجرا برای احراز هویت است، برمیگرداند.
سیستم AuthSub نیز به همین صورت عمل می کند، با این تفاوت که به جای اینکه از کاربر اطلاعات کاربری خود را بپرسد، کاربر را به سرویس گوگل متصل می کند که درخواست اعتبار می کند. سپس این سرویس رمزی را برمی گرداند که برنامه وب می تواند از آن استفاده کند. مزیت این رویکرد این است که گوگل (به جای وب سایت) به طور ایمن اعتبار کاربر را مدیریت و ذخیره می کند.
برای جزئیات بیشتر درباره این سیستمهای احراز هویت، به نمای کلی تأیید هویت دادههای Google یا مستندات تأیید اعتبار حساب Google مراجعه کنید.
وضعیت جلسه
بسیاری از پیادهسازیهای منطق کسبوکار نیاز به چسبندگی جلسه دارند - ردیابی وضعیت جلسه کاربر.
گوگل وضعیت جلسه را به دو صورت ردیابی می کند: استفاده از کوکی ها و استفاده از رمزی که می تواند به عنوان پارامتر پرس و جو ارسال شود. هر دو روش به یک اثر می رسند. توصیه میکنیم مشتریان از یکی از این روشهای ردیابی وضعیت جلسه پشتیبانی کنند (هر کدام کافی است). اگر مشتری از هیچ یک از این روشها پشتیبانی نکند، آن مشتری همچنان با سرویسهای Google Data کار میکند، اما عملکرد ممکن است در مقایسه با کلاینتهایی که از این روشها پشتیبانی میکنند، آسیب ببیند. به طور خاص، اگر یک کلاینت از این روشها پشتیبانی نکند، هر درخواست منجر به تغییر مسیر میشود و بنابراین هر درخواست (و هر داده مرتبط) دو بار به سرور ارسال میشود که بر عملکرد مشتری و سرور تأثیر میگذارد.
کتابخانههای سرویس گیرنده Google وضعیت جلسه را برای شما مدیریت میکنند، بنابراین اگر از کتابخانههای ما استفاده میکنید، برای دریافت پشتیبانی وضعیت جلسه نیازی به انجام کاری ندارید.
منابع اضافی
ممکن است اسناد شخص ثالث زیر برای شما مفید باشد:
- مقایسه اتم و RSS از درهم تنیده
- مروری بر Atom از IBM
- پسوندهای Dublin Core به RSS
- تعاریف روش HTTP 1.1 ; مشخصات برای
GET
،POST
،PUT
وDELETE
- تعاریف کد وضعیت HTTP 1.1
- نحوه ایجاد پروتکل REST
- ساخت خدمات وب به روش REST
- مقدمه ای فنی بر XML
- فضاهای نام XML بر اساس مثال