我想使用 httr2 的req_perform_iterative函数迭代调用分页 API,其中响应提供了要请求的下一个 url。
但是,我似乎无法正确形成next_req()
参数或使用迭代助手,例如iterate_with_cursor()
,并且文档中的示例很简陋。在我的例子中,我需要使用下一个 URL,而不是偏移页码,因为这是我正在调用的 API 的分页系统。
有人可以帮我形成一个正确的next_req()
函数吗?
我们可以使用 rick and morty api 作为示例:
library(httr2)
# request a single page
req <- request("https://rickandmortyapi.com/api/character?page=1") |>
req_perform() |>
resp_body_json()
# return the url for the next page
next_url <- req$info$"next"
我如何将其转变为req_perform_iterative()
可返回多个页面的有效函数?谢谢!
虽然您可以在这里使用,但如果响应主体只是下一页的页码,
iterate_with_cursor()
则会更合适。next
对于这个特定的例子(响应主体中下一页的完整 URL),构建一个新的迭代助手可能更容易,我们可以将其中一个现有的助手作为模板:
虽然
iterate_with_offset()
也可以正常工作,但定义会增加的 url 参数和一个从第一个响应中提取总页数的函数,您最终会得到如下结果:创建于 2024-10-18,使用reprex v2.1.1