اخطار : این صفحه درباره APIهای قدیمی Google، Google Data APIها است. فقط مربوط به APIهایی است که در فهرست راهنمای Google Data APIs فهرست شده اند، که بسیاری از آنها با APIهای جدیدتر جایگزین شده اند. برای اطلاعات در مورد یک API جدید خاص، به مستندات API جدید مراجعه کنید. برای اطلاعات در مورد تأیید درخواستها با یک API جدیدتر، به تأیید اعتبار و مجوز حسابهای Google مراجعه کنید.
رایان بوید، تیم Google Data APIsسپتامبر 2007
- معرفی
- دریافت و نصب cURL
- احراز هویت در سرویس داده Google
- بازیابی فیدها و ورودی ها
- به روز رسانی ورودی ها
- ایجاد مدخل
- حذف ورودی ها
- بارگذاری اشیاء رسانه ای
- سایر ابزارهای خط فرمان
- نتیجه
معرفی
در اصل، Google Data API از فیدها و ورودیهای Atom (XML) به عنوان قالب داده و HTTP به عنوان پروتکلی برای انتقال داده استفاده میکند - پروتکل انتشار Atom را گسترش میدهد. ما تعدادی از کتابخانه های سرویس گیرنده را منتشر می کنیم تا تعامل با Google Data API آسان تر شود. با این حال، همیشه میتوانید از ابزارهای سطح پایینتر برای کار با خدمات ما استفاده کنید، و انجام این کار با کمی راهنمایی بسیار آسان است.
cURL یک برنامه خط فرمان برای انجام درخواست ها با استفاده از پروتکل های مختلف از جمله HTTP است. cURL اغلب توسط توسعه دهندگان برای آزمایش سرویس های Google Data استفاده می شود، زیرا از عملکرد HTTP مورد نیاز برای تعامل با API ها در سطح پایین پشتیبانی می کند.
cURL فقط برای انجام ارتباط HTTP پشتیبانی میکند، بنابراین دانش پروتکل Google Data ، پروتکل مخصوص سرویس و قالب داده XML مورد استفاده، پیش نیاز کار با برنامه است. برخی ابزارهای دیگر در این مقاله برای آسان کردن این کارها ذکر شده است.
این مقاله از مثالهایی بر اساس API دادههای Picasa Web Albums استفاده میکند. با این حال، همه این مثالها را میتوان به راحتی در سایر APIهای Google Data اعمال کرد.
دریافت و نصب cURL
cURL معمولاً در نصب پیشفرض بسیاری از پلتفرمهای یونیکس/لینوکس در دسترس است. سعی کنید curl
در پوسته مورد علاقه خود تایپ کنید تا ببینید آیا ابزار نصب شده و در PATH
شما قرار دارد یا خیر. اگر ابزار را نصب نکردهاید، از صفحه دانلود در وبسایت cURL دیدن کنید تا منبع رسمی یا بسته باینری ارائهشده توسط کاربر را دریافت کنید. توجه داشته باشید که ابزار خط فرمان از کتابخانه libcurl
استفاده می کند، که ممکن است به عنوان یک بسته دانلود جداگانه ارائه شود، بنابراین، اگر از منبع کامپایل نمی کنید، به جای بسته libcurl، حتما یک بسته دودویی دانلود کنید. . اگر میخواهید از cURL برای دریافت نشانههای احراز هویت یا دسترسی به برخی از سرویسهای Google Data که نیاز به استفاده از SSL برای درخواستها دارند، استفاده کنید، بستههای دارای SSL مورد نیاز هستند.
احراز هویت در سرویس داده گوگل
درخواستهای احراز هویت Google Data با افزودن یک هدر HTTP به درخواست انجام میشود که شامل یک نشانه تأیید اعتبار ClientLogin (برنامههای دسکتاپ/موبایل) یا AuthSub (برنامههای وب) است. برای اهداف آزمایش با استفاده از cURL، ClientLogin روش سادهتری است و در زیر مستند شده است. سرصفحههای احراز هویت AuthSub را میتوان با cURL استفاده کرد، اما فرآیند پیشرفتهتر دریافت نشانهها خارج از محدوده این مقاله است.
با استفاده از ClientLogin
ClientLogin برای برنامه های نصب شده (رومیزی/موبایل) در نظر گرفته شده است. با این روش احراز هویت، برنامه با استفاده از Google Data API مستقیماً نام کاربری و رمز عبور کاربر را کنترل می کند.
یک درخواست احراز هویت برای ClientLogin یک نام کاربری، رمز عبور و نام سرویس را به عنوان متغیرهای پست فرم می گیرد. این متغیرها به ترتیب به عنوان آرگومان های Email
، Passwd
و service
ارسال می شوند. این درخواست با چندین نشانه پاسخ می دهد که یکی از آنها می تواند برای درخواست به سرویس Google Data استفاده شود. توجه داشته باشید که آرگومانهای دادهای که با curl
ارسال میشوند، اگر حاوی نویسههای غیرASCII هستند، که اغلب در آرگومانهای Email
و Passwd
ظاهر میشوند، باید با URL کدگذاری شوند. میتوانید از curl
بخواهید که این آرگومانها را با استفاده از پرچم --data-urlencode
رمزگذاری کند.
درخواست نمونه:
curl https://www.google.com/accounts/ClientLogin \ --data-urlencode Email=brad.gushue@example.com --data-urlencode Passwd=new+foundland \ -d accountType=GOOGLE \ -d source=Google-cURL-Example \ -d service=lh2
نمونه پاسخ:
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5sEaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYvrNIwbSC_HjTqF4zudNQnnlDuD2wqZT-g1qXI8KhGAQZV4NexHZoQPlabTsGuRZeIBxj1A LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS83gse-KSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9E61ftQGPg Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh
لطفاً برای اطلاعات خاص در مورد پارامترهای مورد استفاده در درخواست فوق، مستندات ClientLogin را ببینید. در این مثال، سرویسی که ما از آن استفاده می کنیم، Picasa Web Albums data API است. نام سرویس ( service
) lh2
است. نام سرویسهای سایر سرویسهای Google Data را میتوانید در صفحه پرسشهای متداول Google Data APIs پیدا کنید.
مقدار نشانه Auth
در پاسخ بالا تنها مقدار مورد نیاز برای احراز هویت در سرویسهای Google Data است. مقدار این توکن در یک هدر HTTP شکل میگیرد که سپس برای هر درخواست به سرویس Google Data استفاده میشود.
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
توجه : روش فرار از کاراکترهای خط جدید با کاراکترهای اسلش ('\') بالا در پوسته فرمان ویندوز کار نمی کند، بنابراین اگر از curl
در ویندوز استفاده می کنید، باید کل دستور را در یک خط وارد کنید.
بازیابی فیدها و ورودی ها
در Google Data API، بازیابی فیدها و ورودیها با انجام HTTP GET
روی URL، با مجموعهای اختیاری از پارامترهای پرس و جو انجام میشود. از آنجا که ما در حال انجام یک درخواست GET
هستیم، فقط باید سرصفحه احراز هویت و URL به curl
ارسال شود. مثال زیر با استفاده از Picasa Web Albums data API ادامه مییابد و برای بازیابی فهرستی از آلبومهای متعلق به کاربر تأیید شده استفاده میشود. توجه داشته باشید که در این مثال توکن auth را به ABCDEFG
کوتاه کردهایم، اما توکن کامل (مثلا EUBBIacA
... 32JKOuGh
از بالا) باید به جای آن استفاده شود.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
این یک حباب فرمت نشده از XML را برمی گرداند:
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'><id>http://picasaweb.google.com/data/feed/base/user/brad.gushue</id><updated>2007-09-13T21:30:21.454Z</updated>...</entry></feed>
ابزارهای مناسبی برای قالب بندی این خروجی وجود دارد تا آن را برای انسان خواناتر کند، از جمله مرتب . ساده ترین راه برای استفاده از Tidy این است که خروجی را از دستور curl به ترتیب زیر لوله کنید:
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default" | tidy -xml -indent -quiet
این منجر به فید بسیار خواناتری می شود، مانند موارد زیر:
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'> <id>http://picasaweb.google.com/data/feed/api/user/brad.gushue</id> <updated>2007-09-13T21:47:07.337Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#user' /> <title type='text'>brad.gushue</title> <subtitle type='text'></subtitle> <icon> http://lh6.google.com/brad.gushue/AAAAj9zigp4/AAAAAAAAAAA/RiMAlXV4MFI/s64-c/brad.gushue</icon> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue?start-index=1&max-results=1000' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <generator version='1.00' uri='http://picasaweb.google.com/'> Picasaweb</generator> <openSearch:totalResults>8</openSearch:totalResults> <openSearch:startIndex>1</openSearch:startIndex> <openSearch:itemsPerPage>1000</openSearch:itemsPerPage> <gphoto:user>brad.gushue</gphoto:user> <gphoto:nickname>Brad</gphoto:nickname> <gphoto:thumbnail> http://lh6.google.com/brad.gushue/AAAAj9zigp4/AAAAAAAAAAA/RiMAlXV4MFI/s64-c/brad.gushue</gphoto:thumbnail> <entry> <id> http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593</id> <published>2007-05-23T04:55:52.000Z</published> <updated>2007-05-23T04:55:52.000Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Trip To Italy</title> <summary type='text'>This was the recent trip I took to Italy.</summary> <rights type='text'>public</rights> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/9810315389720904593' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue/TripToItalyV2' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593' /> <link rel='edit' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <gphoto:id>9810315389720904593</gphoto:id> <media:group> ... </media:group> </entry> <entry> ... </entry> </feed>
ورودی های انفرادی را می توان به همان روش با ارائه URL برای ورودی، بر خلاف URL feed، بازیابی کرد.
به روز رسانی ورودی ها
ورودیهای Google Data API با انجام یک HTTP PUT
به URL ویرایش با یک کپی جدید از XML ورودی در متن درخواست بهروزرسانی میشوند.
- ورودی را با استفاده از مقدار URL
atom:link/@rel='self'
بازیابی کنید - برای ایجاد تغییرات مورد نیاز، ورودی را به صورت محلی به روز کنید
- با استفاده از مقدار URL
atom:link/@rel='edit'
ورودی را به سرورPUT
1. بازیابی مدخل
ورودی را می توان با استفاده از یکی از دو نشانی اینترنتی پررنگ در بلوک فید بالا بازیابی کرد. URL مورد نیاز مقدار href
برای عنصر link
با rel='self'
است.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593"
2. به روز رسانی ورودی به صورت محلی
پس از بازیابی ورودی، ورودی باید با استفاده از یک ویرایشگر متن محلی یا برنامه به روز شود تا تغییرات مورد نیاز در ورودی ایجاد شود. در دستور بالا برای بازیابی یک ورودی، نتایج را همانطور که در مثالهای قبلی انجام دادیم tidy
نکردیم. نتیجه XML است که دادههای یکسانی را نشان میدهد، اما قالببندی متفاوتی نسبت به نسخهای دارد که tidy
است. برای اهداف ویرایش دستی یک مدخل، استفاده tidy
میتواند کار با XML را آسانتر کند.
توجه : لطفاً به یاد داشته باشید که هنگام ارسال ورودی جدید خود، تمام تعاریف فضای نام XML را که به عنوان ویژگی های atom:entry
استفاده می شود، درج کنید. حذف این موارد باعث تجزیه استثناها می شود. همچنین، tidy
فضاهای بین تعاریف فضای نام را با کاراکترهای خط جدید جایگزین می کند. اگرچه این XML معتبر است، خدمات Google Data در حال حاضر آن را نمیپذیرند. اگر tidy
استفاده می کنید، لطفاً حتماً فاصله های اضافی بین این ویژگی ها در عنصر entry
اضافه کنید.
3. به روز رسانی ورودی در سرور
با استفاده از URL edit
، باید یک کپی از ورودی را با استفاده از cURL در سرویس PUT
. یک هدر برای نشان دادن نوع محتوای ارسال شده به سرور باید اضافه شود. قطعه زیر فرض می کند که فایل با ورودی به روز شده در updated_entry.xml ذخیره شده است.
curl --silent --data-binary "@updated_entry.xml" --request PUT --header "Content-Type: application/atom+xml" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
ایجاد مدخل
ورودیها در Google Data API با انجام HTTP POST
به URL پست با یک ورودی جدید ایجاد میشوند. atom:id
توسط سرور اختصاص داده می شود و بنابراین لازم نیست در ورودی های جدید گنجانده شود. ساده ترین راه برای ایجاد یک ورودی جدید، گرفتن یک ورودی قدیمی و اصلاح آن است. مثال زیر دقیقاً این کار را انجام می دهد.
- یک ورودی الگو را با استفاده از
atom:link/@rel='self'
بازیابی کنید - برای حذف اطلاعات غیر ضروری و ایجاد تغییرات مورد نیاز، ورودی قالب را به صورت محلی تغییر دهید
- با استفاده از URL
post
برای فید، ورودی را به سرورPOST
. این یا در فید بازیابی شده به عنوان مقدارhref
برای عنصرlink
با یکrel='http://schemas.google.com/g/2005#post'
یا در اسناد سرویس در http:// یافت میشود. code.google.com .
1. یک ورودی الگو را بازیابی کنید
یک ورودی واحد را می توان با استفاده از مقدار href
یک عنصر link
با یک rel='self'
به همان روشی که یک ورودی قبل از به روز رسانی آن در مثال بالا بازیابی شد، بازیابی کرد.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593" | tidy -xml -indent -quiet > template_entry.xml
پاسخ، پس از استفاده tidy
، چیزی شبیه به این خواهد بود:
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:exif='http://schemas.google.com/photos/exif/2007' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'> <id> http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981</id> <published>2007-05-23T04:55:52.000Z</published> <updated>2007-05-23T04:55:52.000Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Trip To Italy</title> <summary type='text'>This was the recent trip I took to Italy.</summary> <rights type='text'>public</rights> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/9810315389741123981' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue/TripToItaly' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981' /> <link rel='edit' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981/1179896152905401' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <gphoto:id>9810315389741123981</gphoto:id> <gphoto:name>TripToItaly</gphoto:name> <gphoto:location></gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:timestamp>1179896152000</gphoto:timestamp> <gphoto:numphotos>0</gphoto:numphotos> <gphoto:numphotosremaining>500</gphoto:numphotosremaining> <gphoto:bytesUsed>0</gphoto:bytesUsed> <gphoto:user>brad.gushue</gphoto:user> <gphoto:nickname>Brad</gphoto:nickname> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> <gphoto:commentCount>0</gphoto:commentCount> <media:group> <media:title type='plain'>Trip To Italy</media:title> <media:description type='plain'>This was the recent trip I took to Italy.</media:description> <media:keywords></media:keywords> <media:content url='http://lh5.google.com/brad.gushue/ADFUFKqeA5E/AAAAAAAAABc/V6Sga_Z03WU/TripToItaly.jpg' type='image/jpeg' medium='image' /> <media:thumbnail url='http://lh5.google.com/brad.gushue/ADFUFKqeA5E/AAAAAAAAABc/V6Sga_Z03WU/s160-c/TripToItaly.jpg' height='160' width='160' /> <media:credit>Brad</media:credit> </media:group> </entry>
2. مدخل قالب را اصلاح کنید
ما میخواهیم آلبومی به نام "کرلینگ در کانادا" با تصاویری از مسابقه اخیر خودمان بسازیم. Google Data به شما امکان می دهد عناصر Atom را که سرور مقادیری را برای آنها ارائه می دهد حذف کنید، بنابراین برای ایجاد این ورودی الگوی ساده atom:id
, atom:published
, atom:updated
, atom:author
, و atom:link
مختلف را حذف خواهیم کرد. عناصر موجود در خوراک این به ما یک ورودی قالب را می دهد. سپس ورودی باید برای نمایش آلبوم جدیدی که در حال ایجاد آن هستیم، اصلاح شود:
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gphoto='http://schemas.google.com/photos/2007'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Curling in Canada</title> <summary type='text'>Pictures of all my curling matches in Canada.</summary> <gphoto:location>Canada</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> </entry>
توجه : لطفاً به یاد داشته باشید که هنگام ارسال ورودی جدید خود، تمام تعاریف فضای نام XML را که به عنوان ویژگی های atom:entry
استفاده می شود، درج کنید. حذف این موارد باعث تجزیه استثناها می شود. همچنین، tidy
جای فاصله بین تعاریف فضای نام را می گیرد و آنها را با کاراکترهای خط جدید جایگزین می کند. اگرچه این XML معتبر است، خدمات Google Data در حال حاضر آن را نمیپذیرند. اگر tidy
استفاده می کنید، لطفاً حتماً فاصله های اضافی بین این ویژگی ها در عنصر entry
اضافه کنید.
3. ارسال ورودی جدید به سرور
دستور curl
برای ارسال یک ورودی جدید به سرور بسیار شبیه به روز رسانی یک ورودی موجود است با این تفاوت که URL متفاوت است:
curl --silent --request POST --data-binary "@template_entry.xml" --header "Content-Type: application/atom+xml" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/brad.gushue" | tidy -xml -indent -quiet
اگر پست موفقیت آمیز بود، خروجی XML حاصل یک کپی از ورودی تازه ایجاد شده است. این ورودی شامل مواردی است که سرور در زمان ایجاد ورودی ایجاد کرده است، از جمله مقادیر عناصر atom:id
، atom:published
، atom:updated
و atom:link
. مقادیر link
به دست آمده را می توان برای ویرایش یا حذف ورودی استفاده کرد، مشروط بر اینکه هیچ تغییر دیگری در این میان ایجاد نشود.
حذف ورودی ها
حذف ورودیها بسیار شبیه بهروزرسانی ورودیها است، با این تفاوت که از روش HTTP DELETE
به جای HTTP PUT
استفاده میشود و نیازی به ارسال داده نیست. همچنین مانند درخواست به روز رسانی، URL edit
به عنوان هدف درخواست HTTP استفاده می شود.
curl --silent --request DELETE --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
بارگذاری اشیاء رسانه ای
یکی از ویژگی های مهم Picasa Web Albums data API و Documents List data API توانایی آپلود اشیاء باینری است. cURL می تواند به راحتی آپلود داده های باینری و هدر اسلاگ را انجام دهد. با این حال، Documents List data API در حال حاضر نیاز به ارسال XML به همراه داده های باینری به عنوان یک پیام چند بخشی MIME دارد. شکلدهی پیام چندبخشی خارج از چارچوب این مقاله است.
مثال زیر نحوه آپلود تصویری به نام sweeping_the_rock.png
را در یک آلبوم وب Picasa با عنوان "Sweeping the rock" نشان می دهد:
curl --silent --request POST --data-binary "@sweeping_the_rock.png" --header "Slug: Sweeping the rock" --header "Content-Type: image/png" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/5113621341847124417" | tidy -xml -indent -quiet
سایر ابزارهای خط فرمان
برخی از توسعه دهندگان یادگیری یا اشکال زدایی را با استفاده از ابزارهای خط فرمان دیگر ترجیح می دهند.
ابزارهای محبوب عبارتند از:
- telnet، openssl برای ایجاد اتصالات سوکت خام (به ترتیب متن ساده و مبتنی بر ssl) به سرورهای وب استفاده می شود و می تواند برای تعامل با سرویس های داده گوگل استفاده شود. توجه داشته باشید که ممکن است همه سرویسهای Google Data از SSL پشتیبانی نکنند. در اینجا نحوه باز کردن اتصالات آمده است:
-
telnet picasaweb.google.com 80
(API داده های آلبوم های وب Picasa) -
openssl s_client -connect www.google.com:443
(Google Calendar data API و سایر خدمات در www.google.com)
POST /data/feed/api/user/brad.gushue HTTP/1.1 Host: picasaweb.google.com Authorization: GoogleLogin auth=ABCDEFG Content-Length: 493 <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gphoto='http://schemas.google.com/photos/2007'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Curling in Canada</title> <summary type='text'>Pictures of all my curling matches in Canada.</summary> <gphoto:location>Canada</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> </entry>
هنگام ارسال داده های خام HTTP، توجه داشته باشید که عملیاتPOST
وPUT
به محاسبه مقدار برای یک سربرگContent-Length
نیاز دارند. برای محاسبه این مقدار می توانید از ابزار یونیکسwc
استفاده کنید. تمام محتوای بدنه HTTP را در یک فایل متنی مانندtemplate_entry.xml
(نمونه استفاده شده در بالا) قرار دهید وwc -c template_entry.xml
اجرا کنید. اگر به طور تصادفی از مقدار نادرستی برای هدرContent-Length
استفاده کنید، اغلب اشکال زدایی دشوار است. -
- wget معمولا برای دانلود داده ها از یک وب سرور به یک فایل محلی استفاده می شود. با این حال،
wget
گزینههای زیادی دارد که آن را قادر میسازد انواع مختلف درخواستهای مورد نیاز برای تعامل با سرویسهای Google Data را انجام دهد. در اینجا مثالی از نحوه استفاده ازwget
برایPOST
یک ورودی آلبوم جدید به Picasa Web Albums آورده شده است:wget --post-file template_entry.xml --header "Authorization: GoogleLogin auth=ABCDEFG" --header "Content-Type: application/atom+xml" "http://picasaweb.google.com/data/feed/api/user/brad.gushue"
- xsltproc ابزاری برای اعمال تبدیل های XSL ( XSLT ) به اسناد XML است. می توان از آن برای استخراج آسان بیت های داده دلخواه از ورودی XML یا فید بازگردانده شده توسط Google Data API یا ایجاد ورودی های جدید یا به روز شده استفاده کرد.
نتیجه
همانطور که مشاهده کردید، از cURL و چندین ابزار خط فرمان دیگر می توان برای تعامل آسان با سرویس های داده گوگل با استفاده از XML خام و HTTP استفاده کرد. لطفاً اگر سؤالی در مورد استفاده از این ابزارها با Google Data API مورد علاقه خود دارید، در انجمن های ویژه API به ما بپیوندید.