当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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