group-telegram.com/R4marketing/1301
Last Update:
Вышел httr2 1.0.0
Команда Хедли работала над вторым поколением httr
на протяжении последних двух лет, и вчера был официальный релиз стабильной версии httr2
.
httr2 является преемником httr.Основное его отличие состоит в том, что у него есть явный объект запроса, который можно создать с помощью нескольких вызовов функций. Это делает интерфейс более естественным для работы в пайпах и в целом упрощает жизнь, поскольку вы можете итеративно создавать сложный запрос. httr2 также основан на 10-летнем опыте разработки пакетов, который мы накопили с момента создания httr, поэтому его использование должно быть более удобным. Если вы в настоящее время являетесь пользователем httr, вам не нужно переходить на него, поскольку мы продолжим поддерживать пакет в течение многих лет, но если вы начинаете новый проект, я бы рекомендовал вам попробовать httr2.
От себя добавлю, что с момента выхода httr2
все свои новые пакеты я уже писал на его основе.
————————————————
Что нового в httr2 1.0.0
В этом выпуске представлены улучшенные инструменты для выполнения нескольких запросов, а также множество исправлений ошибок и незначительных улучшений для OAuth.
Для управления политикой отправки набора запросов в данном релизе добавлены следующие 3 функции:
● req_perform_sequential()
- берет список запросов и выполняет их по одному.
● req_perform_parallel()
- берет список запросов и выполняет их параллельно (до 6 одновременно по умолчанию). По смыслу похоже на req_perform_sequential()
, но, очевидно, быстрее за счет потенциальной нагрузки на сервер. У него также есть некоторые ограничения: самое главное, он не может обновить токен OAuth с истекшим сроком действия и игнорирует политику обработки ошибок настроенную через`req_retry()`
и ограничение скорости отправки запросов через req_throttle()
.
● req_perform_iterative()
- принимает один запрос и функцию обратного вызова для генерации следующего запроса из предыдущего ответа. Это будет продолжаться до тех пор, пока функция обратного вызова не вернется NULL или max_reqs не будут выполнены запросы. Это очень полезно для API с поддержкой пагинации, которые сообщают только URL-адрес следующей страницы.
Небольшой пример кода для работы с набором запросов:
# формируем URL для запроса
urls <- paste0("https://swapi.dev/api/people/", 1:10)
# генерируем список объектов запроса
reqs <- lapply(urls, request)
# последовательно отправляем каждый запрос из списка
resps <- req_perform_sequential(reqs)
# функция для парсинга результатов
sw_data <- function(resp) {
tibble::as_tibble(resp_body_json(resp)[1:9])
}
# парсинг результата
resps |> resps_data(sw_data)
● В функцию
req_url_query()
добавлен аргумент .multi
, который позволяет управлять поведением параметра, если вы передаёте в него набор значений в виде вектора:-
.multi = "comma"
- разделение значений через запятую-
.multi = "pipe"
- разделение значений через |
-
.multi = "explode"
- создание одного параметра для каждого значения (например a = c(1, 2)
конвертируется в ?a=1&a=2
)● Так же у пакета теперь появился официальный логотип, который вы видите на изображении к посту.
Ссылки:
- Прочитать о выпуске httr2 1.0.0 можно по ссылке
Полезные материалы по httr2:
- Начало работы с httr2
- Оборачиваем API с помощью httr2
- Видео урок по созданию пакета обёртки над API с помощью httr2
#новости_и_релизы_по_R
BY R4marketing | канал Алексея Селезнёва | Язык R
![](https://photo.group-telegram.com/u/cdn4.cdn-telegram.org/file/tFrApXeIZi_IGMn93akrvOe283liwOOtp-5sOUvD3gyzwz9FgT6F6tskFzDJIjRFHneKIN-c0KBYB6UfT_ExNCWX2u2AoG-LkLyuh_g08bVPMJe829EDAzM15rbvtJWB9UVoe3c4PiuAmYcIj7EfDIalRyL7htwpftlLDpBoU58UY6qOGQHgIlVghxBmWWictstH2mj9mVuNqisApmvsrljWhWAJ815H_8xwJaDkqkv-s4AKZraEygnlsyC7O_IlIsqfrtrRnOrCrzw990hdRpI8xtljEHBH65y8ZN5pHZR0VbdcOtqr_EzGWYgnuY39VX5j-bShC0C7wVTrsoh5_A.jpg)
Share with your friend now:
group-telegram.com/R4marketing/1301