تحذير: تتناول هذه الصفحة واجهات برمجة التطبيقات القديمة من Google، أي Google Data APIs، وهي ذات صلة فقط بواجهات برمجة التطبيقات المدرَجة في دليل Google Data APIs، والتي تم استبدال العديد منها بواجهات برمجة تطبيقات أحدث. للحصول على معلومات حول واجهة برمجة تطبيقات جديدة معيّنة، يُرجى الاطّلاع على مستندات واجهة برمجة التطبيقات الجديدة. للحصول على معلومات عن تفويض الطلبات باستخدام واجهة برمجة تطبيقات أحدث، يُرجى الاطّلاع على مقالة المصادقة والتفويض في حسابات Google.
ريان بويد، فريق Google Data APIsسبتمبر 2007
- مقدمة
- الحصول على cURL وتثبيتها
- المصادقة على إحدى "خدمات بيانات Google"
- استرداد الخلاصات والإدخالات
- تعديل الإدخالات
- إنشاء إدخالات
- حذف الإدخالات
- تحميل عناصر الوسائط
- أدوات سطر الأوامر الأخرى
- الخاتمة
مقدمة
تستخدم Google Data APIs بشكل أساسي خلاصات Atom وإدخالاتها (XML) كتنسيق للبيانات وبروتوكول HTTP لنقل البيانات، ما يؤدي إلى توسيع نطاق بروتوكول Atom للنشر. ننشر عددًا من مكتبات العملاء لتسهيل التفاعل مع Google Data APIs. ومع ذلك، يمكنك دائمًا استخدام أدوات ذات مستوى أدنى للتعامل مع خدماتنا، ويمكنك إجراء ذلك بسهولة تامة باتّباع بعض الإرشادات.
cURL هو تطبيق سطر أوامر لتنفيذ الطلبات باستخدام مجموعة متنوعة من البروتوكولات، بما في ذلك HTTP. يستخدم المطوّرون غالبًا cURL لاختبار خدمات Google Data، لأنّه يتيح وظيفة HTTP المطلوبة للتفاعل مع واجهات برمجة التطبيقات على مستوى منخفض.
لا يوفّر cURL سوى إمكانية إجراء اتصالات HTTP، لذا فإنّ معرفة بروتوكول بيانات Google والبروتوكول الخاص بالخدمة وتنسيق بيانات XML المستخدَم هي شروط أساسية للعمل مع التطبيق. تمت الإشارة إلى بعض الأدوات الأخرى في هذه المقالة لتسهيل تنفيذ هذه المهام.
تستخدم هذه المقالة أمثلة تستند إلى واجهة برمجة التطبيقات الخاصة ببيانات "ألبومات الويب بيكاسا". ومع ذلك، يمكن تطبيق كل هذه الأمثلة بسهولة على واجهات برمجة التطبيقات الأخرى لبيانات Google.
الحصول على cURL وتثبيته
يتوفّر cURL عادةً عند تثبيت العديد من منصات UNIX/Linux بشكل تلقائي. جرِّب كتابة curl
في shell المفضّل لديك لمعرفة ما إذا كانت الأداة مثبّتة وفي PATH
. إذا لم تكن الأداة مثبّتة، انتقِل إلى صفحة التنزيل على موقع cURL الإلكتروني للحصول على المصدر الرسمي أو حزمة ثنائية ساهم بها أحد المستخدمين. يُرجى العِلم أنّ أداة سطر الأوامر تستخدم مكتبة libcurl
، والتي قد يتم توفيرها كحزمة تنزيل منفصلة، لذا إذا لم تكن بصدد التجميع من المصدر، احرص على تنزيل حزمة "ثنائية" بدلاً من حزمة "libcurl". تكون الحِزم المتوافقة مع SSL مطلوبة إذا كنت تريد استخدام cURL للحصول على رموز المصادقة المميزة أو للوصول إلى بعض خدمات "بيانات Google" التي تتطلّب استخدام SSL للطلبات.
المصادقة على إحدى "خدمات بيانات Google"
يتم تنفيذ طلبات بيانات Google المصادَق عليها من خلال إضافة عنوان HTTP إلى الطلب يحتوي على رمز مصادقة ClientLogin (تطبيقات الكمبيوتر المكتبي/الأجهزة الجوّالة) أو AuthSub (تطبيقات الويب). لأغراض الاختبار باستخدام cURL، تُعدّ طريقة ClientLogin أسهل، ويتم توثيقها أدناه. يمكن استخدام عناوين مصادقة AuthSub مع cURL، ولكنّ العملية الأكثر تقدّمًا للحصول على الرموز المميزة لا تدخل في نطاق هذه المقالة.
استخدام ClientLogin
تم تصميم ClientLogin للتطبيقات المثبَّتة (على الكمبيوتر أو الجهاز الجوّال). باستخدام طريقة المصادقة هذه، يتعامل التطبيق الذي يستخدم Google Data APIs مباشرةً مع اسم المستخدم وكلمة المرور.
يتطلّب طلب المصادقة في ClientLogin اسم مستخدم وكلمة مرور واسم خدمة كمتغيّرات في نموذج النشر. يتم تمرير هذه المتغيّرات كالمَعلمات Email
وPasswd
وservice
على التوالي. يؤدي هذا الطلب إلى إنشاء ردّ يتضمّن عدة رموز مميّزة، يمكن استخدام أحدها لتقديم طلبات إلى خدمة "بيانات Google". يُرجى العِلم أنّ وسيطات البيانات التي يتم تمريرها باستخدام curl
يجب أن تكون مُرمَّزة بعنوان URL إذا كانت تحتوي على أحرف غير ASCII، والتي تظهر غالبًا في وسيطات Email
وPasswd
. يمكنك أن تطلب من curl
ترميز هذه الوسيطات باستخدام عنوان URL من خلال استخدام العلامة --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 للحصول على معلومات محدّدة عن المَعلمات المستخدَمة في الطلب أعلاه. في هذا المثال، الخدمة التي نستخدمها هي واجهة برمجة التطبيقات لبيانات "ألبومات الويب في بيكاسا". اسم الخدمة (service
) هو lh2
. يمكنك العثور على أسماء الخدمات الأخرى في "بيانات Google" في صفحة الأسئلة الشائعة حول Google Data APIs.
قيمة الرمز المميز Auth
في الردّ أعلاه هي القيمة الوحيدة المطلوبة للمصادقة على خدمات "بيانات Google". يتم إنشاء قيمة الرمز المميز في رأس HTTP الذي يتم استخدامه بعد ذلك لكل طلب إلى إحدى خدمات "بيانات Google".
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
ملاحظة: لا تعمل طريقة إلغاء تأثير أحرف السطر الجديد باستخدام أحرف الشرطة المائلة الخلفية ('\') الموضّحة أعلاه في واجهة سطر الأوامر في Windows، لذا يجب إدخال الأمر بالكامل في سطر واحد إذا كنت تستخدم curl
على Windows.
استرداد الخلاصات والإدخالات
في Google Data APIs، يتم استرداد الخلاصات والإدخالات من خلال تنفيذ GET
HTTP على عنوان URL، مع مجموعة اختيارية من مَعلمات طلب البحث. بما أنّنا ننفّذ طلب GET
، يجب تمرير عنوان المصادقة وعنوان URL فقط إلى curl
. سيستمر المثال أدناه في استخدام واجهة برمجة التطبيقات لبيانات "ألبومات الويب بيكاسا"، ويتم استخدامه لاسترداد قائمة بالألبومات التي يملكها المستخدم الذي تمّت المصادقة عليه. يُرجى العِلم أنّنا اختصرنا رمز المصادقة المميز إلى 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. أسهل طريقة لاستخدام tidy هي توجيه الناتج من أمر curl إلى tidy كما يلي:
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 للخلاصة.
تعديل الإدخالات
يتم تعديل الإدخالات في Google Data APIs من خلال تنفيذ عملية HTTP PUT
على عنوان URL الخاص بالتعديل مع نسخة جديدة من XML الخاص بالإدخال في نص الطلب.
- استرداد الإدخال باستخدام
atom:link/@rel='self'
قيمة عنوان URL - تعديل الإدخال محليًا لإجراء التغييرات اللازمة
PUT
الإدخال مرة أخرى إلى الخادم، باستخدام قيمة عنوان URLatom:link/@rel='edit'
1. استرداد الإدخال
يمكن استرداد الإدخال باستخدام أحد عنوانَي URL المكتوبَين بخط غامق في قسم الخلاصة أعلاه. عنوان 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" في الوقت الحالي. إذا كنت تستخدم tidy
، يُرجى الحرص على إضافة مسافات إضافية بين هذه السمات في العنصر entry
.
3- تعديل الإدخال على الخادم
باستخدام عنوان URL الخاص بـ edit
، عليك PUT
نسخة من الإدخال إلى الخدمة باستخدام cURL. يجب إضافة عنوان للإشارة إلى نوع المحتوى الذي يتم إرساله إلى الخادم. يفترض المقتطف التالي أنّه تم حفظ الملف الذي يتضمّن الإدخال المعدَّل في 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 APIs من خلال تنفيذ HTTP POST
إلى عنوان URL للمشاركة مع إدخال جديد. يتم تعيين atom:id
من خلال الخادم، وبالتالي ليس من الضروري تضمينه في الإدخالات الجديدة. أسهل طريقة لإنشاء إدخال جديد هي أخذ إدخال قديم وتعديله. سيفعل المثال التالي ذلك بالضبط.
- استرداد إدخال نموذج باستخدام
atom:link/@rel='self'
- تعديل إدخال النموذج محليًا لإزالة المعلومات غير الضرورية وإجراء التغييرات المطلوبة
POST
الإدخال إلى الخادم باستخدام عنوان URL الخاص بالخلاصة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" إزالة عناصر 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" في الوقت الحالي. إذا كنت تستخدم 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 بسهولة تحميل البيانات الثنائية وعنوان URL مختصر. ومع ذلك، تتطلّب واجهة برمجة التطبيقات Documents List data API حاليًا نشر XML مع البيانات الثنائية كرسالة MIME متعددة الأجزاء. لا تتناول هذه المقالة كيفية إنشاء رسالة متعددة الأجزاء.
يوضّح المثال أدناه كيفية تحميل صورة باسم sweeping_the_rock.png
إلى ألبوم ويب في Picasa بعنوان "تنظيف الصخرة":
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". يُرجى العِلم أنّ بعض خدمات "بيانات Google" قد لا تتوافق مع بروتوكول SSL. إليك كيفية فتح الاتصالات:
telnet picasaweb.google.com 80
(Picasa Web Albums data API)openssl s_client -connect www.google.com:443
(واجهة برمجة تطبيقات بيانات "تقويم Google" والخدمات الأخرى على www.google.com)
عند إرسال بيانات HTTP غير معالَجة، يُرجى العِلم أنّ العمليتَين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>
POST
وPUT
ستتطلّبان احتساب قيمة العنوانContent-Length
. يمكنك استخدام أداة UNIXwc
لاحتساب هذه القيمة. ضَع كل محتوى نص HTTP في ملف نصي، مثلtemplate_entry.xml
(المثال المستخدَم أعلاه)، وشغِّلwc -c template_entry.xml
. من الصعب غالبًا تصحيح الأخطاء إذا استخدمت عن طريق الخطأ قيمة غير صحيحة للعنوانContent-Length
. - يُستخدَم الأمر wget عادةً لتنزيل البيانات من خادم ويب إلى ملف محلي. ومع ذلك، يتضمّن
wget
العديد من الخيارات التي تجعله قادرًا على تنفيذ جميع أنواع الطلبات المختلفة اللازمة للتفاعل مع خدمات بيانات Google. في ما يلي مثال على كيفية استخدامwget
من أجلPOST
إدخال ألبوم جديد إلى "ألبومات الويب بيكاسا":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 أو خلاصة XML التي تعرضها Google Data APIs، أو لإنشاء إدخالات جديدة أو معدَّلة.
الخاتمة
كما رأيت، يمكن استخدام cURL والعديد من أدوات سطر الأوامر الأخرى للتفاعل بسهولة مع خدمات Google Data باستخدام XML وHTTP الأوليين. يُرجى الانضمام إلينا في المنتديات الخاصة بواجهات برمجة التطبيقات إذا كانت لديك أي أسئلة حول استخدام هذه الأدوات مع واجهة Google Data API المفضّلة لديك.