Ostrzeżenie: ta strona dotyczy starszych interfejsów API Google – interfejsów API danych Google – dotyczy tylko interfejsów API wymienionych w katalogu interfejsów API danych Google, z których wiele zostało zastąpionych nowszych. Informacje na temat konkretnego nowego interfejsu API można znaleźć w dokumentacji nowego interfejsu API. Informacje o autoryzowaniu żądań za pomocą nowszego interfejsu API znajdziesz w artykule Uwierzytelnianie i autoryzacja kont Google.
Ryan Boyd, zespół Google Data APIWrzesień 2007 r.
- Wprowadzenie
- Uzyskiwanie i instalowanie cURL
- Uwierzytelnianie w usłudze danych Google
- Pobieranie kanałów i wpisów
- Aktualizowanie wpisów
- Tworzenie wpisów
- Usuwanie wpisów
- Przesyłanie obiektów multimedialnych
- Inne narzędzia wiersza poleceń
- Podsumowanie
Wprowadzenie
Interfejsy API danych Google korzystają z plików danych i wpisów Atom (w formacie XML), a protokołu HTTP – jako protokołu transmisji danych. Rozszerzają one protokół Atom Publishing Protocol. Aby ułatwić obsługę interfejsów API danych Google, publikujemy wiele bibliotek klienckich. Zawsze jednak możesz korzystać z narzędzi niższego poziomu, aby współpracować z naszymi usługami. Są tam proste wskazówki.
cURL to aplikacja wiersza poleceń umożliwiająca wykonywanie żądań za pomocą różnych protokołów, w tym HTTP. cURL jest często używany przez deweloperów do testowania usług danych Google, ponieważ obsługuje on funkcję HTTP wymaganą do interakcji z interfejsami API na niskim poziomie.
cURL obsługuje tylko połączenia HTTP, więc znajomość protokołu danych Google, protokołu dotyczącego danej usługi i używanego formatu danych XML jest warunkiem wstępnym do pracy z aplikacją. Inne, o których mowa w tym artykule, ułatwiają te zadania.
W tym artykule użyto przykładów opartych na interfejsie API danych usługi Picasa Web Albums. Wszystkie te przykłady można z łatwością zastosować do innych interfejsów API danych Google.
Uzyskiwanie i instalowanie cURL
cURL jest często dostępny podczas instalacji domyślnej na wielu platformach UNIX/Linux. Wpisz curl
w ulubionej powłoce, aby sprawdzić, czy narzędzie jest zainstalowane i czy znajduje się w: PATH
. Jeśli nie masz tego narzędzia, odwiedź stronę pobierania w witrynie cURL, aby pobrać oficjalne źródło lub plik binarny przesłany przez użytkownika. Pamiętaj, że narzędzie wiersza poleceń korzysta z biblioteki libcurl
, która może być dostępna jako oddzielny pakiet do pobrania, więc jeśli nie kompilujesz kodu ze źródła, pamiętaj, aby pobrać pakiet „binarny” zamiast pakietu „libcurl”. Pakiety z obsługą SSL są wymagane, jeśli chcesz używać cURL do pozyskiwania tokenów uwierzytelniania lub do korzystania z niektórych usług danych Google, które wymagają żądań SSL.
Uwierzytelnianie w usłudze danych Google
Żądania uwierzytelniania danych Google są realizowane przez dodanie do żądania nagłówka HTTP, który zawiera token uwierzytelniania ClientLogin (aplikacje na komputery/aplikacje mobilne) lub AuthSub (aplikacje internetowe). Do testowania za pomocą narzędzia cURL użyj interfejsu ClientLogin. Jest to łatwiejsza metoda, którą można znaleźć poniżej. Z nagłówków uwierzytelniania AuthSub można korzystać w przypadku obiektu cURL, ale zaawansowane procedury pozyskiwania tokenów są poza zakresem tego artykułu.
Przy użyciu ClientLogin
Usługa ClientLogin jest przeznaczona do zainstalowanych aplikacji (na komputery/urządzenia mobilne). W przypadku tej metody uwierzytelniania aplikacja korzystająca z interfejsów Google Data API bezpośrednio obsługuje nazwę użytkownika i hasło.
Żądanie uwierzytelniania ClientLogin używa nazwy użytkownika, hasła i nazwy usługi jako zmiennych posta formularza. Zmienne te są przekazywane odpowiednio jako argumenty Email
, Passwd
i service
. To żądanie zwraca odpowiedź z kilkoma tokenami. Jeden z nich może służyć do wysyłania żądań do usługi danych Google. Pamiętaj, że argumenty danych przekazywane z funkcją curl
muszą być zakodowane w adresie URL, jeśli zawierają znaki spoza zestawu ASCII, które często występują w argumentach Email
i Passwd
. Możesz poprosić curl
o zakodowanie adresu URL w tych argumentach, używając flagi --data-urlencode
.
Przykładowe żądanie:
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
Przykładowa odpowiedź:
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5sEaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYvrNIwbSC_HjTqF4zudNQnnlDuD2wqZT-g1qXI8KhGAQZV4NexHZoQPlabTsGuRZeIBxj1A LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS83gse-KSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9E61ftQGPg Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh
Szczegółowe informacje o parametrach używanych w powyższym żądaniu znajdziesz w dokumentacji ClientLogin. W tym przykładzie korzystamy z interfejsu API danych usługi Picasa Web Albums. Nazwa usługi (service
) to lh2
. Nazwy usług dla innych usług związanych z danymi Google znajdziesz na stronie z najczęstszymi pytaniami dotyczącymi interfejsów API danych Google.
Token Auth
w odpowiedzi powyżej to jedyna wartość potrzebna do uwierzytelnienia w usługach danych Google. Wartość tego tokena jest tworzona w nagłówku HTTP, który jest następnie używany w przypadku każdego żądania do usługi danych Google.
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
Uwaga: metoda zmiany znaczenia znaków nowego wiersza przy użyciu znaków ukośnika („/”) powyżej nie działa w powłoce polecenia systemu Windows, więc jeśli używasz systemu curl
w Windows, musisz wpisać całe polecenie w jednym wierszu.
Pobieranie kanałów i wpisów
W interfejsach Google Data API pobieranie kanałów i wpisów odbywa się przez przekierowanie HTTP GET
na adres URL z opcjonalnym zestawem parametrów zapytania. Wysyłamy żądanie GET
, więc do nagłówka curl
należy przesłać tylko nagłówek autoryzacji i adres URL. W poniższym przykładzie nadal będzie używany interfejs API danych usługi Picasa Web Albums. Służy on do pobierania listy albumów należących do uwierzytelnionego użytkownika. W tym przykładzie skróciliśmy token uwierzytelniania do ABCDEFG
, ale zamiast niego należy używać pełnego tokena (np. EUBBIacA
...32JKOuGh
powyżej).
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
Zwraca niesformatowany obiekt blob 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>
Istnieją pewne narzędzia, które umożliwiają formatowanie tych danych wyjściowych, by były bardziej zrozumiałe dla człowieka, np. uporządkowany. Najprostszym sposobem korzystania ze porządku jest zapewnienie potoku danych wyjściowych polecenia z adresu curl w taki sposób:
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default" | tidy -xml -indent -quiet
Dzięki temu plik danych jest znacznie bardziej czytelny, np. wygląda tak:
<?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>
Poszczególne pozycje można pobierać w ten sam sposób, podając ich adresy URL, a nie adresy URL kanałów.
Aktualizowanie wpisów
Pozycje w interfejsach Google Data API są aktualizowane przez wprowadzenie HTTP PUT
do edytowanego adresu URL w treści z nową kopią kodu XML wpisu.
- Pobierz wpis za pomocą wartości adresu URL
atom:link/@rel='self'
- Zaktualizuj wpis lokalnie, aby wprowadzić niezbędne zmiany
PUT
wpis z powrotem na serwer, używając wartości adresu URLatom:link/@rel='edit'
.
1. Pobieram wpis
Ten wpis można pobrać przy użyciu jednego z 2 adresów URL pogrubionych w powyższym bloku pliku danych. Wymagany adres URL to wartość elementu href
elementu link
z właściwością rel='self'
.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593"
2. Lokalna aktualizacja wpisu
Po pobraniu wpisu musisz go zaktualizować przy użyciu lokalnego edytora tekstu lub aplikacji, aby wprowadzić w nim zmiany. W powyższym poleceniu nie pobieramy danych do tidy
, jak to robiliśmy w poprzednich przykładach. W rezultacie powstaje plik XML, który reprezentuje te same dane, ale różni się formatem niż wersja przystosowana do tidy
. W przypadku ręcznego edytowania wpisu użycie tidy
może często ułatwić pracę z plikiem XML.
Uwaga: pamiętaj, aby podczas publikowania nowego wpisu podać wszystkie definicje przestrzeni nazw XML, które są używane jako atrybuty atom:entry
. Pominięcie ich spowoduje wyjątki analizy. Ponadto tidy
zastąpi spacje między definicjami przestrzeni nazw znakami nowego wiersza. Mimo że jest to prawidłowy kod XML, usługi danych Google obecnie go nie akceptują. Jeśli używasz atrybutu tidy
, pamiętaj o dodaniu dodatkowych spacji między tymi atrybutami w elemencie entry
.
3. Aktualizowanie wpisu na serwerze
Używając adresu URL edit
, musisz PUT
kopia kopii wpisu do usługi za pomocą cURL. Nagłówek wskazujący typ treści wysyłanych na serwer musi zostać dodany. W poniższym fragmencie założono, że plik ze zaktualizowanym wpisem jest zapisany w pliku 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"
Tworzenie wpisów
Wpisy w interfejsach Google Data API tworzy się, wykonując dla adresu URL posta HTTP POST
z nowym wpisem. Serwer atom:id
jest przypisywany przez serwer, więc nie ma potrzeby dodawania go do nowych wpisów. Najprostszym sposobem utworzenia nowego wpisu jest pobranie starego wpisu i zmodyfikowanie go. Właśnie do tego służy ten przykład.
- Pobierz wpis szablonu za pomocą
atom:link/@rel='self'
- Zmodyfikuj wpis szablonu lokalnie, aby usunąć zbędne informacje i wprowadzić niezbędne zmiany.
POST
wpis z powrotem na serwer, używając adresu URLpost
kanału. Można ją znaleźć w pobranym pliku danych jako wartośćhref
elementulink
z elementemrel='http://schemas.google.com/g/2005#post'
lub w dokumentacji usługi na stronie http://code.google.com.
1. Pobieranie wpisu szablonu
Pojedynczy wpis można pobrać przy użyciu wartości href
elementu link
z elementem rel='self'
w taki sam sposób jak wpis został pobrany przed aktualizacją w powyższym przykładzie.
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
Odpowiedź po użyciu polecenia tidy
będzie wyglądać mniej więcej tak:
<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. Zmodyfikuj wpis szablonu
Chcemy utworzyć album „Curling in Canada” ze zdjęciami z naszego ostatniego meczu curlingu. Dane Google umożliwiają pomijanie elementów Atom, które są dostarczane przez serwer. Aby utworzyć prosty wpis szablonu, usuniemy elementy atom:id
, atom:published
, atom:updated
, atom:author
i różne elementy atom:link
z pliku danych. Daje to nam obcięty obraz szablonu. Wpis należy wtedy dostosować do nowego albumu, który tworzymy:
<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>
Uwaga: pamiętaj, aby podczas publikowania nowego wpisu podać wszystkie definicje przestrzeni nazw XML, które są używane jako atrybuty atom:entry
. Pominięcie ich spowoduje wyjątki analizy. Oprócz tego tidy
zastępuje spacje między definicjami przestrzeni nazw, a następnie znakami nowego wiersza. Mimo że jest to prawidłowy kod XML, usługi danych Google obecnie go nie akceptują. Jeśli używasz atrybutu tidy
, pamiętaj o dodaniu dodatkowych spacji między tymi atrybutami w elemencie entry
.
3. Publikowanie nowego wpisu na serwerze
Polecenie curl
do publikowania nowego wpisu na serwerze jest bardzo podobne do aktualizowania istniejącego wpisu z wyjątkiem adresu 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
Jeśli uda się opublikować posta, wynikowy plik XML będzie kopią nowo utworzonego wpisu. Będzie on zawierał elementy wygenerowane przez serwer w momencie jego utworzenia, w tym wartości elementów atom:id
, atom:published
, atom:updated
i atom:link
. Otrzymane wartości link
mogą być używane do edytowania lub usuwania wpisu, o ile nie zostaną wprowadzone żadne dodatkowe zmiany tymczasowo.
Usuwanie wpisów
Usuwanie wpisów jest bardzo podobne do aktualizowania wpisów. Różnica polega na tym, że zamiast HTTP PUT
stosowana jest metoda HTTP DELETE
, a wysyłanie danych nie jest wymagane. Podobnie jak w przypadku żądania aktualizacji adres URL w formacie edit
jest używany jako cel żądania HTTP.
curl --silent --request DELETE --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Przesyłanie obiektów multimedialnych
Ważną funkcją interfejsów API danych usługi Picasa Web Albums i interfejsu Documents List Data API jest możliwość przesyłania obiektów binarnych. Funkcja cURL umożliwia łatwe przesyłanie danych binarnych oraz nagłówka końcówki ślimaka. Jednak obecnie interfejs Documents List Data API wymaga publikowania pliku XML wraz z danymi binarnymi w postaci wieloczęściowej wiadomości MIME. Tworzenie wiadomości wieloczęściowej nie obejmuje tego artykułu.
Przykład poniżej pokazuje, jak przesłać zdjęcie o nazwie sweeping_the_rock.png
do albumu Picasa Web Albums pod tytułem „Miazga”:
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
Inne narzędzia wiersza poleceń
Niektórzy deweloperzy wolą uczyć się lub debugować za pomocą innych narzędzi wiersza poleceń.
Popularne narzędzia obejmują:
- Metody telnet, opensl służą do wykonywania nieprzetworzonych połączeń gniazdowych (odpowiednio w postaci zwykłego tekstu i protokołu SSL) na potrzeby serwerów WWW i można ich używać do interakcji z usługami danych Google. Pamiętaj, że nie wszystkie usługi danych Google obsługują protokół SSL. Aby otworzyć połączenia:
telnet picasaweb.google.com 80
(interfejs API danych usługi Picasa Web Albums)openssl s_client -connect www.google.com:443
(interfejs API danych Kalendarza Google i inne usługi na 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>
Wysyłając nieprzetworzone dane HTTP, pamiętaj, że operacjePOST
iPUT
będą wymagały obliczenia wartości nagłówkaContent-Length
. Do obliczenia tej wartości możesz użyć narzędzia UNIXwc
. Umieść całą zawartość HTTP w pliku tekstowym takim jaktemplate_entry.xml
(przykład powyżej) i uruchomwc -c template_entry.xml
. Debugowanie często jest trudne, jeśli przypadkowo użyjesz nieprawidłowej wartości nagłówkaContent-Length
. - Parametr wget zwykle służy do pobierania danych z serwera WWW do pliku lokalnego.
wget
ma jednak wiele opcji, które pozwalają wykonywać różne typy żądań potrzebnych do interakcji z usługami dotyczącymi danych Google. Oto przykład, w jaki sposób użyć funkcjiwget
doPOST
dodania nowego wpisu albumu do 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"
- gcloudtproc to narzędzie do przekształcania plików XSL (XSLT) z dokumentami XML. Można go użyć do łatwego wyodrębniania wybranych fragmentów danych z wpisu XML lub kanału zwracanego przez interfejsy API danych Google, a także do generowania nowych lub zaktualizowanych wpisów.
Podsumowanie
Jak wiesz, można użyć narzędzia cURL i kilku innych narzędzi wiersza poleceń do interakcji z usługami Google Data przy użyciu nieprzetworzonych plików XML i HTTP. Jeśli masz pytania dotyczące korzystania z tych narzędzi w ulubionym interfejsie API danych Google, odwiedź nasze fora poświęcone interfejsowi API.