用於執行一個或多個 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()
創建的。應該包含method
、url
、body
和token
。 - ...
-
傳遞給 HTTP 方法的可選參數。
- n_max
-
返回的最大項目數。默認為
Inf
,即沒有限製,我們不斷發出請求,直到獲得所有項目。 - n
-
計算一個響應或頁麵中的項目數的函數。默認函數始終返回
1
,因此將每個頁麵視為一個項目。如果您對響應的結構了解更多,您可以傳遞另一個函數來計數和閾值,例如文件或評論的數量。 - verbose
-
這種對各個 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 googledrive request_generate 構建 Google Drive API 請求
- R googledrive drive_cp 複製雲端硬盤文件
- R googledrive drive_mime_type 查找 MIME 類型
- R googledrive drive_reveal 添加新的雲端硬盤文件信息列
- R googledrive drive_rm 從雲端硬盤刪除文件
- R googledrive expose 暴露對象
- R googledrive drive_id 驅動器 ID 類
- R googledrive drive_auth_configure 編輯和查看身份驗證配置
- R googledrive drive_upload 上傳到新的雲端硬盤文件
- R googledrive drive_mv 移動雲端硬盤文件
- R googledrive drive_put 將新媒體放入雲端硬盤文件中
- R googledrive drive_has_token 手上有令牌嗎?
- R googledrive drive_user 獲取當前用戶的信息
- R googledrive drive_rename 重命名雲端硬盤文件
- R googledrive drive_trash 將雲端硬盤文件移入或移出回收站
- R googledrive as_dribble 強行運球
- R googledrive drive_share 共享雲端硬盤文件
- R googledrive drive_about 獲取有關雲端硬盤函數的信息
- R googledrive drive_update 更新現有雲端硬盤文件
- R googledrive drive_mkdir 創建雲端硬盤文件夾
- R googledrive drive_fields 請求部分資源
- R googledrive shared_drive_update 更新共享雲端硬盤
- R googledrive drive_endpoints 列出驅動器端點
- R googledrive shared_drive_rm 刪除共享雲端硬盤
- R googledrive shortcut_resolve 解決目標的捷徑
注:本文由純淨天空篩選整理自Jennifer Bryan等大神的英文原創作品 Make a request for the Google Drive v3 API。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。