Peringatan: Halaman ini membahas API lama Google, yaitu Google Data API; halaman ini hanya relevan dengan API yang tercantum dalam direktori Google Data API, banyak di antaranya telah diganti dengan API yang lebih baru. Untuk informasi tentang API baru tertentu, lihat dokumentasi API baru. Untuk informasi tentang memberi otorisasi permintaan dengan API baru, lihat Autentikasi dan Otorisasi Akun Google.
Ryan Boyd, Tim Google Data APISeptember 2007
- Pengantar
- Mendapatkan dan menginstal cURL
- Mengautentikasi ke Layanan Data Google
- Mengambil feed dan entri
- Memperbarui entri
- Membuat entri
- Menghapus entri
- Mengupload objek media
- Alat command line lainnya
- Kesimpulan
Pengantar
Pada intinya, Google Data API menggunakan feed dan entri Atom (XML) sebagai format data dan HTTP sebagai protokol untuk transmisi data - memperluas Protokol Penerbitan Atom. Kami memublikasikan sejumlah library klien untuk mempermudah interaksi dengan Google Data API. Namun, Anda tetap dapat menggunakan alat tingkat rendah untuk bekerja dengan layanan kami, dan hal ini cukup mudah dilakukan dengan sedikit panduan.
cURL adalah aplikasi command line untuk melakukan permintaan menggunakan berbagai protokol termasuk HTTP. cURL sering digunakan oleh developer untuk menguji layanan Data Google, karena mendukung fungsi HTTP yang diperlukan untuk berinteraksi dengan API pada tingkat rendah.
cURL hanya memberikan dukungan untuk melakukan komunikasi HTTP, jadi pengetahuan tentang protokol Data Google, protokol khusus layanan, dan format data XML yang digunakan adalah prasyarat untuk bekerja dengan aplikasi. Beberapa alat lain disebutkan dalam artikel ini agar tugas tersebut menjadi lebih mudah.
Artikel ini menggunakan contoh berdasarkan data API Album Web Picasa. Namun, semua contoh ini dapat diterapkan ke Google Data API lainnya.
Mendapatkan dan menginstal cURL
cURL biasanya tersedia pada penginstalan default banyak platform UNIX/Linux. Coba ketik curl
di shell favorit Anda untuk melihat apakah alat tersebut terinstal dan berada di PATH
Anda. Jika Anda belum menginstal alat tersebut, buka halaman download di situs cURL untuk mendapatkan paket biner sumber resmi atau kontribusi pengguna. Perhatikan bahwa alat command line menggunakan library libcurl
, yang mungkin ditawarkan sebagai paket download terpisah, jadi, jika Anda tidak mengompilasi dari sumber, pastikan untuk mendownload paket 'biner', bukan paket 'libcurl'. Paket yang mendukung SSL diperlukan jika Anda ingin menggunakan cURL untuk mendapatkan token autentikasi atau mengakses beberapa layanan Data Google yang mengharuskan penggunaan SSL untuk permintaan.
Mengautentikasi ke Layanan Data Google
Permintaan Data Google yang diautentikasi dilakukan dengan menambahkan header HTTP ke permintaan yang berisi token autentikasi ClientLogin (aplikasi desktop/seluler) atau AuthSub (aplikasi web). Untuk tujuan pengujian menggunakan cURL, ClientLogin adalah metode yang lebih mudah dan didokumentasikan di bawah. Header autentikasi AuthSub dapat digunakan dengan cURL, tetapi proses untuk memperoleh token yang lebih kompleks berada di luar cakupan artikel ini.
Menggunakan ClientLogin
ClientLogin ditujukan untuk aplikasi yang terinstal (desktop/seluler). Dengan metode autentikasi ini, aplikasi yang menggunakan Google Data API akan secara langsung menangani nama pengguna dan sandi pengguna.
Permintaan autentikasi untuk ClientLogin menggunakan nama pengguna, sandi, dan nama layanan sebagai variabel postingan formulir. Variabel ini masing-masing diteruskan sebagai argumen Email
, Passwd
, dan service
. Permintaan ini menghasilkan respons dengan beberapa token, salah satunya dapat digunakan untuk membuat permintaan ke layanan Data Google. Perhatikan bahwa argumen data yang diteruskan dengan curl
harus dienkodekan URL jika berisi karakter non-ASCII, yang sering muncul dalam argumen Email
dan Passwd
. Anda dapat meminta curl
untuk mengenkode URL argumen ini menggunakan flag --data-urlencode
.
Contoh Permintaan:
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
Contoh Respons:
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5sEaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYvrNIwbSC_HjTqF4zudNQnnlDuD2wqZT-g1qXI8KhGAQZV4NexHZoQPlabTsGuRZeIBxj1A LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS83gse-KSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9E61ftQGPg Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh
Lihat dokumentasi ClientLogin untuk informasi khusus terkait parameter yang digunakan dalam permintaan di atas. Dalam contoh ini, layanan yang kami gunakan adalah data API Album Web Picasa. Nama layanan (service
) adalah lh2
. Nama layanan untuk layanan Data Google lainnya dapat ditemukan di halaman FAQ Google Data API.
Nilai token Auth
dalam respons di atas adalah satu-satunya nilai yang diperlukan untuk autentikasi ke layanan Data Google. Nilai token ini dibentuk menjadi header HTTP yang kemudian digunakan untuk setiap permintaan ke layanan Data Google.
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
Catatan: Metode escape karakter baris baru dengan karakter garis miring terbalik ('\') di atas tidak berfungsi di shell perintah Windows, jadi Anda harus memasukkan seluruh perintah dalam satu baris jika menjalankan curl
di Windows.
Mengambil feed dan entri
Di Google Data API, pengambilan feed dan entri dilakukan dengan melakukan GET
HTTP pada URL, dengan kumpulan parameter kueri opsional. Karena kita membuat permintaan GET
, hanya header autentikasi dan URL yang harus diteruskan ke curl
. Contoh di bawah akan terus menggunakan data API Album Web Picasa dan digunakan untuk mengambil daftar album yang dimiliki oleh pengguna yang terautentikasi. Perlu diketahui bahwa kami telah memperpendek token autentikasi menjadi ABCDEFG
dalam contoh ini, tetapi token lengkap (misalnya EUBBIacA
...32JKOuGh
dari atas) harus digunakan sebagai penggantinya.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
Ini akan mengembalikan blob XML yang tidak diformat:
<?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>
Ada beberapa alat yang memadai untuk memformat output ini agar lebih mudah dibaca manusia, termasuk terapi. Cara termudah untuk menggunakan tidy adalah dengan menyalurkan output dari perintah curl ke tidy seperti berikut:
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default" | tidy -xml -indent -quiet
Ini menghasilkan feed yang jauh lebih mudah dibaca, seperti berikut:
<?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>
Setiap entri dapat diambil dengan cara yang sama dengan memberikan URL untuk entri, bukan URL feed.
Memperbarui entri
Entri di Google Data API diperbarui dengan melakukan HTTP PUT
pada URL edit dengan salinan baru XML entri dalam isi permintaan.
- Ambil entri menggunakan nilai URL
atom:link/@rel='self'
- Memperbarui entri secara lokal untuk membuat perubahan yang diperlukan
PUT
entri kembali ke server, menggunakan nilai URLatom:link/@rel='edit'
1. Mengambil entri
Entri dapat diambil menggunakan salah satu dari dua URL yang dicetak tebal di blok feed di atas. URL yang diperlukan adalah nilai href
untuk elemen link
dengan rel='self'
.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593"
2. Memperbarui entri secara lokal
Setelah Anda mengambil entri, entri perlu diperbarui menggunakan editor teks lokal atau aplikasi untuk membuat perubahan yang diperlukan pada entri. Dalam perintah di atas untuk mengambil entri, kita tidak menyisipkan hasilnya ke tidy
seperti yang telah kita lakukan dalam contoh sebelumnya. Hasilnya adalah XML yang mewakili data yang sama, tetapi memiliki format yang berbeda dengan versi yang diterapkan ke tidy
. Untuk tujuan pengeditan entri secara manual, menggunakan tidy
sering kali dapat memudahkan penggunaan XML.
Catatan: Jangan lupa untuk menyertakan semua definisi namespace XML yang digunakan sebagai atribut ke atom:entry
saat Anda memposting entri baru. Menghapusnya akan menyebabkan pengecualian pengecualian. Selain itu, tidy
akan mengganti spasi di antara definisi namespace dengan karakter baris baru. Meskipun ini adalah XML yang valid, layanan Data Google saat ini tidak menerimanya. Jika Anda menggunakan tidy
, pastikan untuk menambahkan spasi tambahan di antara atribut ini pada elemen entry
.
3. Memperbarui entri di server
Dengan menggunakan URL edit
, Anda harus PUT
salinan entri ke layanan menggunakan cURL. Header untuk menunjukkan jenis konten yang dikirim ke server perlu ditambahkan. Cuplikan berikut mengasumsikan bahwa file dengan entri yang diperbarui disimpan di updated_entri.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"
Membuat entri
Entri di Google Data API dibuat dengan melakukan HTTP POST
pada URL postingan dengan entri baru. atom:id
ditetapkan oleh server, sehingga tidak perlu disertakan dalam entri baru. Cara termudah untuk membuat entri baru adalah dengan mengambil entri lama dan mengubahnya. Contoh berikut akan melakukan hal itu.
- Mengambil entri template menggunakan
atom:link/@rel='self'
- Mengubah entri template secara lokal untuk menghapus informasi yang tidak perlu dan membuat perubahan yang diperlukan
POST
entri kembali ke server, menggunakan URLpost
untuk feed. Ini dapat ditemukan di feed yang diambil sebagai nilaihref
untuk elemenlink
denganrel='http://schemas.google.com/g/2005#post'
, atau dalam dokumentasi untuk layanan di http://code.google.com.
1. Mengambil entri template
Entri tunggal dapat diambil menggunakan nilai href
dari elemen link
dengan rel='self'
dengan cara yang sama seperti entri yang diambil sebelum memperbaruinya pada contoh di atas.
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
Setelah menggunakan tidy
, responsnya akan terlihat seperti ini:
<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. Mengubah entri template
Kami ingin membuat album berjudul "Keriting di Kanada" dengan foto dari pertandingan curling terbaru kami. Data Google memungkinkan Anda menghapus elemen Atom yang nilainya disediakan oleh server, jadi untuk membuat entri template sederhana ini, kita akan menghapus atom:id
, atom:published
, atom:updated
, atom:author
, dan berbagai elemen atom:link
di feed. Tindakan ini akan memberi kita entri template yang disederhanakan. Entri tersebut kemudian harus dimodifikasi untuk mewakili album baru yang kita buat:
<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>
Catatan: Jangan lupa untuk menyertakan semua definisi namespace XML yang digunakan sebagai atribut ke atom:entry
saat Anda memposting entri baru. Menghapusnya akan menyebabkan pengecualian pengecualian. Selain itu, tidy
akan mengganti spasi di antara definisi namespace dan menggantinya dengan karakter baris baru. Meskipun ini adalah XML yang valid, layanan Data Google saat ini tidak menerimanya. Jika Anda menggunakan tidy
, pastikan untuk menambahkan spasi tambahan di antara atribut ini pada elemen entry
.
3. Memposting entri baru ke server
Perintah curl
untuk memposting entri baru ke server sangat mirip dengan memperbarui entri yang sudah ada, kecuali bahwa URL-nya berbeda:
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
Jika postingan berhasil, output XML yang dihasilkan adalah salinan entri yang baru dibuat. Entri ini akan menyertakan hal-hal yang dihasilkan server pada saat entri dibuat, termasuk nilai untuk elemen atom:id
, atom:published
, atom:updated
, dan atom:link
. Nilai link
yang dihasilkan dapat digunakan untuk mengedit atau menghapus entri, asalkan tidak ada perubahan tambahan yang dibuat untuk sementara.
Menghapus entri
Menghapus entri sangat mirip dengan memperbarui entri, tetapi metode HTTP DELETE
akan digunakan, bukan HTTP PUT
, dan tidak ada data yang perlu dikirim. Sama halnya dengan permintaan pembaruan, URL edit
digunakan sebagai target permintaan HTTP.
curl --silent --request DELETE --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Mengupload objek media
Fitur penting dari API data Album Web Picasa dan API data Dokumen Daftar adalah kemampuan untuk mengunggah objek biner. cURL dapat dengan mudah menyelesaikan upload data biner dan header slug. Namun, API data Daftar Dokumen saat ini memerlukan postingan XML bersama dengan data biner sebagai pesan multibagian MIME. Membuat pesan multibagian di luar cakupan artikel ini.
Contoh di bawah menunjukkan cara mengupload gambar bernama sweeping_the_rock.png
ke Album Web Picasa dengan judul "Menyapu batu":
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
Alat command line lainnya
Beberapa developer lebih memilih pembelajaran atau proses debug menggunakan alat command line lainnya.
Alat populer mencakup:
- telnet, openssl digunakan untuk membuat koneksi socket raw (masing-masing berbasis teks biasa dan berbasis ssl) ke server web dan dapat digunakan untuk berinteraksi dengan layanan Data Google. Perhatikan bahwa tidak semua layanan Data Google dapat mendukung SSL. Berikut cara membuka koneksinya:
telnet picasaweb.google.com 80
(Data API Album Web Picasa)openssl s_client -connect www.google.com:443
(API data Google Kalender dan layanan lainnya di 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>
Saat mengirim data HTTP mentah, perhatikan bahwa operasiPOST
danPUT
akan memerlukan komputasi nilai untuk headerContent-Length
. Anda dapat menggunakan alat UNIXwc
untuk menghitung nilai ini. Tempatkan semua konten isi HTTP ke dalam file teks sepertitemplate_entry.xml
(contoh yang digunakan di atas) dan jalankanwc -c template_entry.xml
. Sering kali sulit untuk melakukan debug jika Anda tidak sengaja menggunakan nilai yang salah untuk headerContent-Length
. - wget biasanya digunakan untuk mendownload data dari server web ke file lokal. Namun,
wget
memiliki banyak opsi yang membuatnya mampu melakukan berbagai jenis permintaan yang diperlukan untuk berinteraksi dengan layanan Data Google. Berikut adalah contoh cara menggunakanwget
untukPOST
entri album baru ke Album Web Picasa: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 adalah alat untuk menerapkan transformasi XSL (XSLT) ke dokumen XML. Ini dapat digunakan untuk dengan mudah mengekstrak bit data yang diinginkan dari entri XML atau feed yang ditampilkan oleh Google Data API, atau untuk membuat entri baru atau yang diperbarui.
Kesimpulan
Seperti yang Anda lihat, cURL dan beberapa alat command line lainnya dapat digunakan untuk berinteraksi dengan mudah dengan layanan Data Google menggunakan XML mentah dan HTTP. Bergabunglah dengan kami dalam forum khusus API jika ada pertanyaan tentang penggunaan alat ini dengan Google Data API favorit Anda.