用于执行一个或多个 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。