Google Drive API V3 & API V2
사용중인 클라이언트 프로그램들에서 구글 드라이브 API V3를 지원하기 시작한 것은 수년 전 (Version 10.4.2 Apr 21, 2017)이었다.
그러나, Google Drive API V3는 일부 프로그램에서 핵심적인 속도 제한이 발생했다.
업로드/다운로드 속도에서 흔치 않은 속도 제한이 발생하는 이유로, 지난 몇 년간 API V3 마운트를 이용하지 않았다.
그렇다고 해서 API V2 이용이 편한 것 만은 아니였다.
기본적으로 Google Drive API V2는 초기 마운트가 느리다는 단점이 있다. 이것은 초기 마운트에서는 큰 문제가 되지 않는다. 하지만, 데이터 백업으로 사용되는 클라이언트 프로그램에서 이미 업로드된 데이터량이 늘어나는 경우, 데이터량이 많을 수록 마운트 속도는 느려지게 된다.
100만개 이상 파일이 존재하는 마운트에서는 분석에 필요한 시간이 수시간 발생하기도 한다.
이런 문제들이 2018년 10일 이후 현재 사용중인 클라이언트 프로그램들의 업데이트와 함께 개선됐다. 그리고 일부 프로그램에서는 더이상 Google Drive API V2 마운트를 지원하지 않는다.
로컬과 클라우드 연동 데이터 백업용으로 사용되는 메인 프로그램인 GoodSync의 경우에도 2019년 2월 4일자 업데이트로 Google Drive API V2 지원이 끊겼다.
또한, GoodSync에서는 Google Drive API V3 마운트로 인한 업로드/다운로드 속도 제한이 발생하지 않으며, 마운트 속도 또한 빠른 편이다.
Google Drive API V3의 기본적인 변화를 보면,
- Update methods now reject requests which specify non-writable fields.
- The
fields
query parameter should be specified for methods which return - The
exportFormats
andimportFormats
fields inAbout
are now maps of source MIME type to target MIME types. - The
appdata
andappfolder
aliases have been replaced withappDataFolder
. - The
drive.appdata
scope no longer causes application data files to be returned fromfiles.list
andchanges.list
. Use the query parameter?spaces=appDataFolder
to request application data. - Properties are now maps in
File
resources. Public properties are in theproperties
field while private properties are inappProperties
. - Property queries now use two separate fields with no explicit visibility parameter:
properties has {key='k' and value='v'}
appProperties has {key='k' and value='v'}
- The
File
modifiedTime
field is now updated intelligently based on the fields being modified. Clients can also set it explicitly. - The
File
viewedByMeTime
field no longer updated automatically. - Imports to Google Docs formats are now requested by setting the appropriate target
mimeType
in the resource body, rather than specifying?convert=true
. - Import operations will return a 400 error if the format is not supported.
- Readers and commenters can no longer view permissions.
- The
me
alias for permissions has been removed.
- Full resources are no longer returned by default. Use the
fields
query parameter to request specific fields to be returned. If left unspecified only a subset of commonly used fields are returned. - Duplicate and obsolete functionality has been removed. Examples:
- The
Children
andParents
collections have been removed. Usefiles.list
instead. - The
Realtime.*
methods have been removed. See the Realtime API documentation for alternatives.
- The
- A number of field and parameter names have changed and affects accessing fields in resources as well as
q
andfields
expressions. Examples include:- The property
name
is now used in placed oftitle
. - All date/time fields are now suffixed with
Time
instead ofDate
. - Results from list operations no longer use a generic
items
field to contain the result set. Results are now included in a field named for the corresponding resource type (e.g.files
,changes
, etc.).
- The property
- All update operations now use PATCH instead of PUT
- The
exportLinks
field has been removed fromfiles
. To export Google Documents, use thefiles.export
method instead. - The general approach for
changes.list
has changed. Opaque page tokens are now used in place of change ids. To poll the change collection, first callchanges.getStartPageToken
for the initial value. For subsequent queries, uses thenewStartPageToken
value returned fromchanges.list
.