Quero chamar iterativamente uma API paginada usando a função req_perform_iterative do httr2 , onde a resposta fornece uma próxima URL para solicitação.
No entanto, não consigo formar corretamente o next_req()
argumento ou usar os auxiliares de iteração, como iterate_with_cursor()
, e os exemplos na documentação são leves. No meu caso, preciso usar a próxima url em vez de deslocar o número da página, pois esse é o sistema de paginação da API que estou chamando.
Alguém poderia me ajudar a formar uma next_req()
função correta?
Podemos usar a API do Rick and Morty como exemplo:
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"
Como faço para transformar isso em uma req_perform_iterative()
função funcional que retornará várias páginas? Obrigado!
Embora você possa usar
iterate_with_cursor()
aqui, seria melhor senext
o corpo da resposta tivesse apenas um número de página seguinte.Para este exemplo específico (URL completa para a próxima página no corpo da resposta), provavelmente é mais fácil simplesmente criar um novo auxiliar de iteração. Podemos usar um dos existentes como modelo:
Embora
iterate_with_offset()
também funcione bem, defina o parâmetro url que seria incrementado e uma função que extraia o número total de páginas da primeira resposta e você deve terminar com algo assim:Criado em 2024-10-18 com reprex v2.1.1