當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R googledrive request_make 向 Google Drive v3 API 發出請求


用於執行一個或多個 Drive API 請求並可能處理響應的低級函數。相反,大多數用戶應該使用更高級別的包裝器來促進常見任務,例如上傳或下載雲端硬盤文件。這裏的函數供內部使用以及圍繞 Drive API 進行編程。這裏記錄了三個函數:

  • request_make() 執行最低限度的操作:調用 gargle::request_make() ,僅添加 googledrive 用戶代理。通常,輸入是使用 request_generate() 創建的,輸出是使用 gargle::response_process() 處理的。

  • do_request() 就是 gargle::response_process(request_make(x, ...)) 。它存在隻是因為我們必須創建do_paginated_request(),並且不為單個請求創建等效的內容感覺很奇怪。

  • do_paginated_request() 通過頁麵遍曆來執行輸入請求。無法將分頁請求分為 "make request" 步驟和 "process request" 步驟,因為必須從當前頁麵的內容中提取下一頁的令牌。因此,該函數執行這兩項操作並返回已處理響應的列表,每頁一個。

用法

request_make(x, ...)

do_request(x, ...)

do_paginated_request(
  x,
  ...,
  n_max = Inf,
  n = function(res) 1,
  verbose = deprecated()
)

參數

x

列表,保存 HTTP 請求的組件,大概是用 request_generate() 創建的。應該包含 methodurlbodytoken

...

傳遞給 HTTP 方法的可選參數。

n_max

返回的最大項目數。默認為 Inf ,即沒有限製,我們不斷發出請求,直到獲得所有項目。

n

計算一個響應或頁麵中的項目數的函數。默認函數始終返回1,因此將每個頁麵視為一個項目。如果您對響應的結構了解更多,您可以傳遞另一個函數來計數和閾值,例如文件或評論的數量。

verbose

[Deprecated]這種對各個 googledrive 函數的邏輯論證已被棄用。要全局禁止 googledrive 消息傳遞,請使用options(googledrive_quiet = TRUE)(默認行為是發出信息性消息)。要以更有限的方式抑製消息傳遞,請使用幫助程序local_drive_quiet()或者with_drive_quiet().

request_make() :httr 中的response 類的對象。

do_request() :表示單個請求返回的內容的列表。

do_paginated_request() :列表列表,代表返回的內容,每頁一個組件。

也可以看看

其他低級 API 函數:drive_has_token()drive_token()request_generate()

例子

if (FALSE) {
# build a request for an endpoint that is:
#   * paginated
#   * NOT privileged in googledrive, i.e. not covered by request_generate()
# "comments" are a great example
# https://developers.google.com/drive/v3/reference/comments
#
# Practice with a target file with > 2 comments
# Note that we request 2 items (comments) per page
req <- gargle::request_build(
  path = "drive/v3/files/{fileId}/comments",
  method = "GET",
  params = list(
    fileId = "your-file-id-goes-here",
    fields = "*",
    pageSize = 2
  ),
  token = googledrive::drive_token()
)
# make the paginated request, but cap it at 1 page
# should get back exactly two comments
do_paginated_request(req, n_max = 1)
}
源代碼:R/request_make.R

相關用法


注:本文由純淨天空篩選整理自Jennifer Bryan等大神的英文原創作品 Make a request for the Google Drive v3 API。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。