Uyarı: Bu sayfa, Google'ın eski API'leri olan Google Veri API'leriyle ilgilidir. Bu sayfalar, çoğu yeni API'lerle değiştirilen Google Veri API'leri dizininde listelenen API'lerle ilgilidir. Belirli bir yeni API ile ilgili bilgi edinmek için yeni API'nin belgelerine bakabilirsiniz. Yeni bir API ile istekleri yetkilendirme hakkında bilgi için Google Hesaplarında Kimlik Doğrulama ve Yetkilendirme başlıklı makaleyi inceleyin.
Ryan Boyd, Google Veri API'leri EkibiEylül 2007
- Giriş
- cURL edinme ve yükleme
- Google veri hizmetinin kimliğini doğrulama
- Feed'leri ve girişleri alma
- Girişleri güncelleme
- Giriş oluşturma
- Girişleri silme
- Medya nesneleri yükleme
- Diğer komut satırı araçları
- Sonuç
Giriş
Google Veri API'ları temel olarak veri biçimi olarak Atom feed'lerini ve girişlerini (XML) ve veri iletimi için protokol olarak HTTP'yi kullanarak Atom Yayınlama Protokolü'ni genişletir. Google Veri API'leri ile etkileşimi kolaylaştırmak için bir dizi istemci kitaplığı yayınladık. Ancak, hizmetlerimizle çalışmak için alt düzey araçları her zaman kullanabilirsiniz. Bunu yapmak için biraz yardım almak da oldukça kolaydır.
cURL, HTTP dahil olmak üzere çeşitli protokoller kullanarak istekleri gerçekleştirmek için kullanılan bir komut satırı uygulamasıdır. cURL, geliştiriciler tarafından Google Veri hizmetlerini test etmek için sıklıkla kullanılır. Zira API'lerle düşük düzeyde etkileşim kurmak için gerekli HTTP işlevi desteklenir.
cURL yalnızca HTTP iletişimi gerçekleştirme konusunda destek sağlar. Bu nedenle Google Veri protokolü, hizmete özgü protokol ve kullanılan XML veri biçimi gibi bilgilerden yararlanmak, uygulamayla çalışmak için bir avantajdır. Bu makalede, bu görevleri kolaylaştırmak için bazı diğer araçlar belirtilmektedir.
Bu makalede Picasa Web Albümleri veri API'sine dayalı örnekler kullanılmıştır. Ancak tüm bu örnekler kolayca diğer Google veri API'lerine uygulanabilir.
cURL edinme ve yükleme
cURL, birçok UNIX/Linux platformunun varsayılan yüklenmesinde genel olarak kullanılabilir. Aracın yüklü olup olmadığını ve PATH
cihazınızda bulunup bulunmadığını görmek için favori kabuğunuza curl
yazmayı deneyin. Araç yüklü değilse resmi kaynağı veya kullanıcının katkıda bulunduğu ikili program paketini almak için cURL web sitesindeki indirme sayfasını ziyaret edin. Komut satırı aracının ayrı bir indirme paketi olarak sunulabilecek libcurl
kitaplığını kullandığını unutmayın. Bu nedenle, kaynaktan derleme yapmıyorsanız "libcurl" paketi yerine bir "binary" paketi indirdiğinizden emin olun. Kimlik doğrulama jetonları almak veya istekler için SSL kullanmayı gerektiren bazı Google Veri hizmetlerine erişmek isterseniz cURL'yi kullanmak istiyorsanız SSL özellikli paketler gerekir.
Google Veri Hizmeti Kimlik Doğrulaması
Kimlik doğrulaması yapılmış Google Verileriyle ilgili istekler, ClientLogin (masaüstü/mobil uygulamalar) veya AuthSub (web uygulamaları) kimlik doğrulama jetonunu içeren bir HTTP üstbilgisi eklenerek gerçekleştirilir. cURL ile test yaparken ClientLogin daha kolay bir yöntemdir ve aşağıda belgelenmiştir. AuthSub kimlik doğrulama üstbilgileri cURL ile birlikte kullanılabilir, ancak jetonları alma işleminin daha gelişmiş süreci bu makalenin kapsamında değildir.
ClientLogin'i kullanma
ClientLogin, yüklü (masaüstü/mobil) uygulamalara yöneliktir. Bu kimlik doğrulama yönteminde, Google Veri API'lerini kullanan uygulama doğrudan kullanıcı adını ve şifresini işler.
ClientLogin için bir kimlik doğrulama isteği, form gönderme değişkenleri olarak bir kullanıcı adı, şifre ve hizmet adı alır. Bu değişkenler sırasıyla Email
, Passwd
ve service
bağımsız değişkenleri olarak iletilir. Bu istek, birden fazla jeton içeren bir yanıt verir. Bu jetonlardan biri, Google Veri hizmetine istek göndermek için kullanılabilir. curl
ile iletilen veri bağımsız değişkenlerinin, genellikle Email
ve Passwd
bağımsız değişkenlerinde görünen ASCII olmayan karakterler içeriyorsa URL olarak kodlanması gerektiğini unutmayın. --data-urlencode
flag'ini kullanarak curl
'den bu bağımsız değişkenleri URL olarak kodlamasını isteyebilirsiniz.
Örnek İstek:
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
Örnek Yanıt:
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5sEaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYvrNIwbSC_HjTqF4zudNQnnlDuD2wqZT-g1qXI8KhGAQZV4NexHZoQPlabTsGuRZeIBxj1A LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS83gse-KSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9E61ftQGPg Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh
Yukarıdaki istekte kullanılan parametrelerle ilgili özel bilgiler için lütfen ClientLogin dokümanlarına bakın. Bu örnekte kullandığımız hizmet Picasa Web Albümleri veri API'sıdır. Hizmet adı (service
) lh2
. Diğer Google Veri hizmetlerinin hizmet adları Google Veri API'leri SSS sayfasında bulunabilir.
Yukarıdaki yanıtta bulunan Auth
jetonunun değeri, Google Veri Hizmetleri için kimlik doğrulama amacıyla gereken tek değerdir. Bu jetonun değeri, daha sonra bir Google Veri hizmetine yapılan her istek için kullanılan bir HTTP başlığı olarak oluşturulur.
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
Not: Yukarıda ters eğik çizgi karakterine sahip ("\") yeni satır karakterlerine çıkış yapma yöntemi, Windows komut kabuğunda çalışmaz. Bu nedenle, Windows'da curl
kullanıyorsanız komutun tamamını tek bir satıra girmeniz gerekir.
Feed'leri ve girişleri alma
Google Veri API'larında, feed'ler ve girişler alma işlemi, bir URL'de isteğe bağlı bir dizi sorgu parametresiyle HTTP GET
gerçekleştirilir. Bir GET
isteği yerine getirdiğimiz için curl
öğesine yalnızca yetkilendirme üstbilgisinin ve URL'nin iletilmesi gerekir. Aşağıdaki örnek, kimliği doğrulanmış kullanıcıya ait albümlerin listesini almak için kullanılacak olan Picasa Web Albümleri veri API'sini kullanmaya devam edecektir. Bu örnekte kimlik doğrulama jetonunu ABCDEFG
şeklinde kısalttığımızı ancak bunun yerine tüm jetonun (ör. EUBBIacA
...32JKOuGh
) kullanılması gerektiğini unutmayın.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
Bu, XML biçiminde biçimlendirilmemiş bir blob döndürür:
<?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>
Bu çıkışı, düzenli olanlar da dahil olmak üzere daha okunabilir hale getirmek için bazı biçimlendirme araçları var. Gerginliği kullanmanın en kolay yolu curl komutundan çıkışı aşağıdaki gibi düzenliklere dönüştürmektir:
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default" | tidy -xml -indent -quiet
Bu sayede, aşağıdaki gibi çok daha okunabilir bir feed elde edilir:
<?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>
Bağımsız girişler, özet akışı URL'si yerine giriş URL'si sağlanarak aynı şekilde alınabilir.
Girişler güncelleniyor
Google Veri API'lerine yapılan girişler, düzenlemenin URL'sine HTTP PUT
ifadesi eklenerek güncellenir. İsteğin gövdesinde girişin XML'inin yeni bir kopyası gönderilir.
atom:link/@rel='self'
URL değerini kullanarak girişi alın- Gerekli değişiklikleri yapmak için girişi yerel olarak güncelleyin
PUT
atom:link/@rel='edit'
URL'si değerini kullanarak girişi tekrar sunucuya gönderin
1. Giriş alınıyor
Giriş, yukarıdaki feed bloğunda kalın yazılmış iki URL'den biri kullanılarak alınabilir. Gerekli URL, rel='self'
içeren link
öğesinin href
değeridir.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593"
2. Giriş yerel olarak güncelleniyor
Girişi aldıktan sonra, girişte gerekli değişikliklerin yapılması için girişin yerel metin düzenleyici veya uygulama kullanılarak güncellenmesi gerekir. Bir giriş almak için yukarıdaki komutta, önceki örneklerde yaptığımız gibi sonuçları tidy
işaretlemedik. Sonuç olarak aynı veriyi temsil eden, ancak tidy
özelliğine aktarılmış sürümden farklı biçimlendirmeye sahip olan XML ortaya çıkar. Bir girişi manuel olarak düzenlemek amacıyla, tidy
kullanımı genellikle XML ile çalışmayı kolaylaştırabilir.
Not: Yeni girişinizi gönderirken atom:entry
özelliği için kullanılan tüm XML ad alanı tanımlarını eklemeyi lütfen unutmayın. Bunların atlanması, istisnaların ayrıştırılmasına neden olur. Ayrıca tidy
, ad alanı tanımları arasındaki boşlukları yeni satır karakterleriyle değiştirir. Bu geçerli bir XML olsa da Google Veri Hizmetleri şu anda bunu kabul etmemektedir. tidy
kullanıyorsanız lütfen entry
öğesinde bu özellikler arasına ilave boşluklar eklediğinizden emin olun.
3. Sunucudaki giriş güncelleniyor
edit
URL'sini kullanarak cURL'yi kullanarak hizmete yapılan girişin bir kopyasını PUT
. Sunucuya gönderilen içeriğin türünü gösteren bir üstbilginin eklenmesi gerekir. Aşağıdaki snippet'te, güncellenen girişe sahip dosyanın güncellenmiş_giriş.xml olarak kaydedildiği varsayılmaktadır.
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"
Giriş oluşturma
Google Veri API'lerine yapılan girişler, yeni bir giriş içeren yayın URL'sine HTTP POST
yapılarak oluşturulur. atom:id
, sunucu tarafından atanır ve bu nedenle yeni girişlere eklenmesi gerekmez. Yeni bir giriş oluşturmanın en kolay yolu eski bir girişi alıp değiştirmektir. Aşağıdaki örnekte de tam olarak bu şekilde yapılmaktadır.
atom:link/@rel='self'
girişini kullanarak bir şablon girişi alın- Gereksiz bilgileri kaldırmak ve gerekli değişiklikleri yapmak için şablon girişini yerel olarak değiştirin
POST
Feed'inpost
URL'sini kullanarak girişi sunucuya geri döndürün. Bu değer, alınan feed'derel='http://schemas.google.com/g/2005#post'
içerenlink
öğesi içinhref
değeri olarak veya http://code.google.com adresindeki hizmetin dokümanlarında bulunur.
1. Şablon girişi al
Tek bir giriş, yukarıdaki örnekte güncellemeden önce, alınan girişle aynı şekilde rel='self'
özelliğine sahip bir link
öğesinin href
değeri kullanılarak alınabilir.
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
kullanımından sonra yanıt aşağıdaki gibi görünecektir:
<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. Şablon girişini değiştirin
Son körling maçımızın fotoğraflarını içeren "Kanada'da Curling" adlı bir albüm oluşturmak istiyoruz. Google Verileri, sunucunun değer sağladığı Atom öğelerini bırakmanıza olanak tanır. Bu nedenle, bu basit şablon girişini oluşturmak için feed'deki atom:id
, atom:published
, atom:updated
, atom:author
ve çeşitli atom:link
öğelerini kaldıracağız. Bu, bize sade bir şablon girişi sağlar. Daha sonra girişin, oluşturmakta olduğumuz yeni albümü temsil etmesi için değiştirilmesi gerekir:
<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>
Not: Yeni girişinizi gönderirken atom:entry
özelliği için kullanılan tüm XML ad alanı tanımlarını eklemeyi lütfen unutmayın. Bunların atlanması, istisnaların ayrıştırılmasına neden olur. Ayrıca tidy
, ad alanı tanımları arasındaki boşlukları değiştirir ve bunları yeni satır karakterleriyle değiştirir. Bu geçerli bir XML olsa da Google Veri Hizmetleri şu anda bunu kabul etmemektedir. tidy
kullanıyorsanız lütfen entry
öğesinde bu özellikler arasına ilave boşluklar eklediğinizden emin olun.
3. Yeni girişi sunucuya yayınlama
Sunucuya yeni bir giriş göndermek için kullanılan curl
komutu, mevcut URL'nin farklı olması haricinde mevcut bir girişi güncellemeye çok benzer:
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
Yayın başarılı olursa elde edilen XML çıkışı, yeni oluşturulan girişin bir kopyası olur. Bu giriş, atom:id
, atom:published
, atom:updated
ve atom:link
öğelerinin değerleri de dahil olmak üzere, girişin oluşturulduğu sırada sunucunun oluşturduğu öğeleri içerir. Sonuç olarak elde edilen link
değerleri, arada ek bir değişiklik yapılmaması durumunda girişi düzenlemek veya silmek için kullanılabilir.
Girişleri silme
Girişleri silme işlemi, girişlerin güncellenmesine çok benzer. HTTP PUT
yerine HTTP DELETE
yöntemi kullanılır ve veri gönderilmesine gerek yoktur. Güncelleme isteğinde olduğu gibi, edit
URL'si de HTTP isteğinin hedefi olarak kullanılır.
curl --silent --request DELETE --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Medya nesneleri yükleme
Picasa Web Albümleri veri API'si ve Belgeler Listesi veri API'sinin önemli bir özelliği, ikili program nesnelerini yükleme özelliğidir. cURL, ikili program verilerini ve bir sümük başlığını kolayca yükleyebilir. Ancak Documents List veri API'sı şu anda XML'yi ikili program verileriyle birlikte MIME çok parçalı mesaj olarak yayınlamayı gerektiriyor. Çok parçalı mesaj oluşturmak bu makalenin kapsamında değildir.
Aşağıdaki örnekte, "Rock'ı temizleme" başlıklı bir Picasa Web Albümü'ne sweeping_the_rock.png
adlı resmin nasıl yükleneceği gösterilmektedir:
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
Diğer komut satırı araçları
Bazı geliştiriciler, diğer komut satırı araçlarını kullanarak öğrenmeyi veya hata ayıklamayı tercih eder.
Popüler araçlar şunlardır:
- telnet, opensl, web sunucularına ham yuva bağlantıları (sırasıyla düz metin ve Ssl tabanlı) için kullanılır ve Google Veri hizmetleriyle etkileşimde bulunmak için kullanılabilir. Tüm Google Veri hizmetlerinin SSL'yi desteklemediğini unutmayın. Bağlantıları nasıl açacağınız aşağıda açıklanmıştır:
telnet picasaweb.google.com 80
(Picasa Web Albümleri veri API'si)openssl s_client -connect www.google.com:443
(Google Calendar data API ve diğer hizmetler 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>
Ham HTTP verilerini gönderirkenPOST
vePUT
işlemlerininContent-Length
başlığı için değer hesaplaması gerektireceğini unutmayın. Bu değeri hesaplamak için UNIX aracınıwc
kullanabilirsiniz. HTTP gövdesinin tüm içeriğinitemplate_entry.xml
gibi bir metin dosyasına (yukarıda kullanılan örnek) yerleştirin vewc -c template_entry.xml
komutunu çalıştırın.Content-Length
başlığı için yanlışlıkla yanlış bir değer kullanırsanız genellikle hata ayıklamanız zordur. - wget genellikle bir web sunucusundan yerel dosyaya veri indirmek için kullanılır. Ancak
wget
, Google Veri hizmetleriyle etkileşimde bulunmak için gereken tüm farklı istek türlerini gerçekleştirmeyi sağlayan birçok seçeneğe sahiptir. Picasa Web Albümleri'ne yeni albüm girişi içinPOST
öğesininwget
ile nasıl kullanılacağına dair bir örneği aşağıda bulabilirsiniz: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"
- xlsxtproc, XML dokümanlarına XSL dönüşümleri (XSLT) uygulamak için kullanılan bir araçtır. Google Veri API'leri tarafından döndürülen bir XML girişi veya feed'den istediğiniz veri bitlerini kolayca ayıklamak veya yeni ya da güncellenmiş girişler oluşturmak için kullanılabilir.
Sonuç
Gördüğünüz gibi, cURL ve diğer birkaç komut satırı aracı, ham XML ve HTTP kullanarak Google veri hizmetleriyle kolayca etkileşime geçmek için kullanılabilir. En sevdiğiniz Google Data API ile bu araçların kullanımı hakkında sorularınız varsa lütfen API'lere özel forumlarda bize katılın.