我正在查询 Google API 以使用 ruby 的 Google API 官方 gem 列出驱动器中的所有文件。我正在使用 Google 开发者页面中给出的示例 - https://developers.google.com/drive/v2/reference/files/list
我提出的第一个请求在“项目”中返回一个红宝石“哈希”数组。下一个请求在“项目”中返回“Google::APIClient::Schema::Drive::V2::File”或“Google::APIClient::Schema::Drive::V2::ParentReference”数组(每种类型背后的原因也困扰着我)。
有谁知道为什么会这样?在“files.list”的参考页面上,没有提到改变结果的类型。
def self.retrieve_all_files(client)
drive = client.discovered_api('drive', 'v2')
result = Array.new
page_token = nil
begin
parameters = {}
if page_token.to_s != ''
parameters['pageToken'] = page_token
end
api_result = client.execute(
:api_method => drive.files.list,
:parameters => parameters)
if api_result.status == 200
files = api_result.data
result.concat(files.items)
page_token = files.next_page_token
else
puts "An error occurred: #{result.data['error']['message']}"
page_token = nil
end
end while page_token.to_s != ''
result
end
编辑:
我还不能解决这个问题,但我设法更好地理解它:
当第一次向 API 发出请求时,在用户授权后,“file.list”会返回 File 资源的“Items”属性的 Hashes 数组。每个 Hashes 就像一个 File 资源,具有 File 的所有属性,只是访问的类型不同。例如:文件的标题可以这样访问“File['title']”。
在发出第一个请求后,所有后续请求都会返回一个文件资源数组,可以像“File.title”这样访问。