تحذير: تتعلق هذه الصفحة بواجهات برمجة التطبيقات القديمة من Google، وهي واجهات برمجة التطبيقات لبيانات Google؛ وهي مرتبطة فقط بواجهات برمجة التطبيقات المدرجة في دليل Google Data APIs، والتي تم استبدال العديد منها بواجهات برمجة تطبيقات أحدث. للحصول على معلومات حول واجهة برمجة تطبيقات جديدة، اطلع على وثائق واجهة برمجة التطبيقات الجديدة. للحصول على معلومات حول تفويض الطلبات باستخدام واجهة برمجة تطبيقات أحدث، اطلع على مصادقة حسابات Google وتفويضها.
ريان بويد، فريق Google Data APIsأيلول (سبتمبر) 2007
- المقدمة
- الحصول على cURL وتثبيته
- المصادقة على خدمة بيانات Google
- استرداد الخلاصات والإدخالات
- تعديل الإدخالات
- إنشاء إدخالات
- حذف الإدخالات
- تحميل عناصر الوسائط
- أدوات سطر الأوامر الأخرى
- الخاتمة
المقدمة
وبشكل أساسي، تستخدم واجهات برمجة التطبيقات لبيانات Google خلاصات Atom وإدخالاتها (XML) كتنسيق للبيانات وHTTP كبروتوكول لنقل البيانات - حيث يتم تمديد بروتوكول النشر Atom. ننشر عددًا من مكتبات العملاء لتسهيل التفاعل مع Google Data APIs. ومع ذلك، يمكنك دائمًا استخدام أدوات على المستوى الأدنى للعمل مع خدماتنا، ومن السهل جدًا إجراء ذلك بالقليل من التوجيه.
cURL هو تطبيق سطر أوامر لتنفيذ الطلبات باستخدام مجموعة متنوعة من البروتوكولات بما فيها HTTP. يستخدم cURL غالبًا مطوري البرامج لاختبار خدمات بيانات Google، حيث إنه يدعم وظائف HTTP المطلوبة للتفاعل مع واجهات برمجة التطبيقات على مستوى منخفض.
لا يقدم cURL سوى دعمًا لإجراء اتصال HTTP، لذا فإن معرفة بروتوكول بيانات Google، والبروتوكول الخاص بالخدمة، وتنسيق بيانات XML المستخدم هو متطلبات مسبقة للعمل مع التطبيق. تم ذكر بعض الأدوات الأخرى في هذه المقالة لتسهيل هذه المهام.
تستخدم هذه المقالة أمثلة تستند إلى واجهة برمجة التطبيقات لبيانات ألبومات الويب بيكاسا. ومع ذلك، يمكن تطبيق جميع هذه الأمثلة بسهولة على واجهات برمجة التطبيقات لبيانات Google الأخرى.
الحصول على cURL وتثبيته
يتوفر cURL بشكل شائع عند التثبيت الافتراضي للعديد من أنظمة UNIX/Linux الأساسية. جرِّب كتابة curl
في واجهة المستخدم المفضَّلة لديك لمعرفة ما إذا كانت الأداة قد تم تثبيتها وأنها موجودة في PATH
. إذا لم تكن الأداة مثبتة، فانتقل إلى صفحة التنزيل على موقع cURL على الويب للحصول على المصدر الرسمي أو حزمة ثنائية يساهم بها المستخدم. لاحظ أن أداة سطر الأوامر تستخدم مكتبة libcurl
، والتي قد يتم تقديمها كحزمة تنزيل منفصلة، لذا إذا لم تكن تنوي التجميع من المصدر، فتأكد من تنزيل حزمة 'ثنائية' بدلاً من حزمة 'libcurl'. تكون الحزم التي تمكِّن طبقة المقابس الآمنة مطلوبة إذا كنت تريد استخدام cURL للحصول على رموز مصادقة أو للدخول إلى بعض خدمات بيانات Google التي تتطلب استخدام طبقة المقابس الآمنة للطلبات.
المصادقة على خدمة بيانات 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
بترميز هذه الوسيطات باستخدام العلامة --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، يتم استرداد الخلاصات والإدخالات من خلال تنفيذ HTTP GET
على عنوان 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>
تتوفّر بعض الأدوات المناسبة لتنسيق هذا الإخراج لتسهيل قراءته، بما في ذلك الترتيب. إنّ أسهل طريقة لاستخدام الترتيب المنظّم هي عبر توجيه المخرجات من الأمر 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 للخلاصة.
تحديث الإدخالات
يتم تحديث الإدخالات في واجهات برمجة التطبيقات لبيانات Google من خلال إضافة HTTP PUT
إلى عنوان URL للتعديل مع نسخة جديدة من XML للإدخال في نص الطلب.
- استرداد الإدخال باستخدام قيمة عنوان URL لـ
atom:link/@rel='self'
- تحديث الإدخال محليًا لإجراء التغييرات المطلوبة
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. يجب إضافة رأس للإشارة إلى نوع المحتوى الذي يتم إرساله إلى الخادم. يفترض المقتطف التالي أن الملف بالإدخال الذي تم تحديثه يتم حفظه في update_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 من خلال إضافة HTTP POST
إلى عنوان URL للمشاركة مع إدخال جديد. يتم تخصيص atom:id
من خلال الخادم، وبالتالي ليس من الضروري تضمينه في الإدخالات الجديدة. أسهل طريقة لإنشاء إدخال جديد هي أخذ ملاحظة قديمة وتعديلها. وسيتم إجراء ذلك في المثال التالي.
- استرداد إدخال نموذج باستخدام
atom:link/@rel='self'
- تعديل إدخال النموذج محليًا لإزالة المعلومات غير الضرورية وإجراء التغييرات المطلوبة
POST
الإدخال مرة أخرى إلى الخادم، باستخدام عنوان URLpost
للخلاصة. ويمكن العثور على ذلك في الخلاصة التي تم استردادها كقيمة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- تعديل إدخال النموذج
نريد إنشاء ألبوم باسم "Curling in Canada" يحتوي على صور من أحدث تطابق مع لعبة الكرلنغ. تسمح لك بيانات 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"
تحميل عناصر الوسائط
من الميزات المهمة في واجهة برمجة التطبيقات لبيانات ألبومات الويب بيكاسا وواجهة برمجة التطبيقات لبيانات قائمة المستندات هي القدرة على تحميل الكائنات الثنائية. ويمكن لـ cURL بسهولة تحميل البيانات الثنائية ورأس البَزَّاق. ومع ذلك، تتطلب واجهة برمجة التطبيقات لبيانات قائمة المستندات نشر XML جنبًا إلى جنب مع البيانات الثنائية كرسالة متعددة الأجزاء من MIME. إن صياغة الرسالة متعددة الأجزاء خارج المجال لهذه المقالة.
يوضح المثال أدناه كيفية تحميل صورة باسم sweeping_the_rock.png
إلى ألبوم الويب بيكاسا بعنوان "كنس صخرة":
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 وopensl لإجراء اتصالات بمقابس غير منسقة (نص عادي ومستند إلى ssl، على التوالي) إلى خوادم الويب ويمكن استخدامها للتفاعل مع خدمات بيانات Google. لاحظ أنه قد لا تتوفر طبقة المقابس الآمنة في بعض خدمات بيانات Google. إليك كيفية فتح الاتصالات:
telnet picasaweb.google.com 80
(واجهة برمجة التطبيقات لبيانات ألبومات الويب بيكاسا)openssl s_client -connect www.google.com:443
(واجهة برمجة التطبيقات لبيانات تقويم Google والخدمات الأخرى على 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
. يمكنك استخدام أداة 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 أو خلاصة يتم عرضها بواسطة Google Data APIs أو لإنشاء إدخالات جديدة أو معدّلة.
الخاتمة
كما رأيت، يمكن استخدام cURL والعديد من أدوات سطر الأوامر الأخرى للتفاعل بسهولة مع خدمات بيانات Google باستخدام XML وHTTP الأولي. يُرجى الانضمام إلينا في منتديات محددة لواجهة برمجة التطبيقات إذا كانت لديك أي أسئلة حول استخدام هذه الأدوات مع واجهة برمجة تطبيقات بيانات Google المفضلة.