Przewodnik porównawczy interfejsu Drive API v2 i v3

Najnowsza wersja interfejsu Google Drive API to wersja 3. Wersja 3 jest wydajniejsza, ponieważ wyszukiwania zwracają tylko podzbiór pól. Używaj bieżącej wersji, chyba że potrzebujesz kolekcji w wersji v2. Jeśli używasz wersji 2, rozważ przejście na wersję 3. Aby przeprowadzić migrację, zapoznaj się z artykułem Migracja do interfejsu Drive API w wersji 3. Pełną listę różnic między wersjami znajdziesz w artykule Porównanie interfejsów Drive API w wersji 2 i 3.

Jeśli chcesz nadal używać wersji 2, zapoznaj się z przewodnikiem po zmianach w interfejsie Drive API w wersji 2, aby dowiedzieć się, jak deweloperzy korzystający z wersji 2 powinni zmodyfikować niektóre instrukcje w przewodnikach dotyczących wersji 3.

Aby dowiedzieć się więcej o ulepszeniach w interfejsie Drive API w wersji 3, możesz obejrzeć ten film, w którym inżynierowie Google omawiają nowy projekt interfejsu API.

Ulepszenia w wersji 3

Aby zoptymalizować wydajność i zmniejszyć złożoność zachowania interfejsu API, w wersji 3 wprowadzono te ulepszenia w porównaniu z poprzednią wersją interfejsu API:

  • Wyszukiwania plików i dysków współdzielonych domyślnie nie zwracają pełnych zasobów, tylko podzbiór najczęściej używanych pól. Więcej informacji o parametrze fields, znajdziesz w opisach metod files.list i drives.list.
  • Prawie wszystkie metody, które zwracają odpowiedź, wymagają teraz parametru fields. Listę wszystkich metod wymagających parametru fields znajdziesz w dokumentacji interfejsu Drive API.
  • Usunięto zasoby, które mają zduplikowane możliwości. Oto kilka przykładów:
    • Metoda files.list ma taką samą funkcjonalność jak kolekcje Children i Parents, dlatego zostały one usunięte z wersji 3.
    • Metody Realtime.* zostały usunięte.
  • Dane aplikacji nie są domyślnie zwracane w wynikach wyszukiwania. W wersji 2 możesz ustawić zakres drive.appdata który zwraca dane aplikacji z files.list metody i changes.list metody, ale spowalnia to działanie. W wersji 3 ustawiasz zakres drive.appdata i parametr zapytania spaces=appDataFolder, aby poprosić o dane aplikacji.
  • Wszystkie operacje aktualizacji używają metody PATCH zamiast PUT.
  • Aby eksportować Dokumenty Google, użyj metody files.export.
  • Metoda changes.list działa inaczej. Zamiast identyfikatorów zmian używaj nieprzezroczystych tokenów strony. Aby sprawdzić kolekcję zmian, najpierw wywołaj metodę changes.getStartPageToken , aby uzyskać wartość początkową. W przypadku kolejnych zapytań metoda changes.list zwraca wartość newStartPageToken.
  • Metody aktualizacji odrzucają teraz żądania, które określają pola niepodlegające zapisowi.
  • Pola exportFormats i importFormats w wersji 2 w zasobie about to listy dozwolonych formatów importu i eksportu. W wersji 3 są to mapy typów MIME możliwych miejsc docelowych dla wszystkich obsługiwanych importów i eksportów.
  • Aliasy appdata i appfolder w wersji 2 to teraz appDataFolder w wersji 3.
  • Zasób properties został usunięty z wersji 3. Zasób files ma pole properties które zawiera prawdziwe pary klucz-wartość. Pole properties zawiera właściwości publiczne, a pole appProperties – właściwości prywatne, więc pole widoczności nie jest potrzebne.
  • Pole modifiedTime w zasobie files aktualizuje czas ostatniej modyfikacji pliku przez dowolną osobę. W wersji 2 pole modifiedDate można było zmieniać tylko podczas aktualizacji, jeśli ustawiono pole setModifiedDate.
  • Pole viewedByMeTime w zasobie files nie jest aktualizowane automatycznie.
  • Aby importować formaty Dokumentów Google, ustaw odpowiedni docelowy mimeType w treści zasobu. W wersji 2 ustawiasz ?convert=true.
  • Operacje importu zwracają błąd 400, jeśli format nie jest obsługiwany.
  • Osoby z uprawnieniami do czytania i komentowania nie mogą wyświetlać uprawnień.
  • Alias me dla uprawnień został usunięty.
  • Niektóre funkcje były dostępne w ramach zasobu żądania, ale teraz są dostępne jako parametr żądania. Na przykład:
    • W wersji 2 możesz użyć children.delete, aby usunąć plik podrzędny z folderu nadrzędnego.
    • W wersji 3 używasz files.update w pliku podrzędnym z parametrem ?removeParents=parent_id w adresie URL.

Inne różnice

W wersji 3 nazwy pól i parametrów są inne. Oto kilka przykładów:

  • W zasobie files właściwość name zastępuje właściwość title.
  • Wszystkie pola daty i godziny mają teraz sufiks Time zamiast Date.
  • Operacje list nie używają pola items do przechowywania zbioru wyników. Typ zasobu udostępnia pole dla wyników (np. files lub changes).