Я пытаюсь получить список билетов Jira, которые были открыты кем-либо в организации. У меня есть список идентификаторов пользователей, но в этой организации около 1400 человек.
Поскольку таких людей очень много, я не могу просто запросить их все за 1 запрос, поэтому я создал цикл для этого. Часть цикла GET-запроса работает нормально, и я получаю ответ для каждого идентификатора (независимо от того, были ли какие-либо билеты Jira фактически созданы этим пользователем). Когда я сталкиваюсь с проблемой, пытаясь извлечь содержимое этих ответов, httr :: content выдает ошибку is.response(x) is not true
. Похоже, это связано с тем, что я передал список как x в «content», хотя я пробовал и другие варианты, но безуспешно.
org_list <- as.data.frame(read.csv("org_list.csv"))
Где CSV-файл похож на это (но с 1378 идентификаторами):
ID
abc123
xyz987
Вот цикл:
for (i in 1:1378) {
assign(paste0("query_", org_list[i,]), GET("https://myjira.com/",
path = "rest/api/2/search",
query = list(jql = paste0("project in (ABC,DEF,XYZ) AND reporter = ", org_list[i,]), maxResults = 500),
authenticate(my_UN, my_PW),
verbose()
)
)
tmp_var <- as.character(org_list[i,])
api_request_content <- httr::content(tmp_var, as = "text")
api_request_content_flat <- fromJSON(api_request_content, flatten = TRUE)
assign(paste0("data_", tmp_var), as.data.frame(api_request_content_flat$issues))
rm(paste0("query_", tmp_var))
}
Это создает объект ответа, такой как «query_abc123», «query_xyz987» и т. Д. Сам цикл работает нормально, если я удаляю все, что находится за пределами функции assign.
Я также пробовал:
api_request_content <- httr::content(org_list[i,], as = "text")
И
api_request_content <- httr::content(paste0(org_list[i,]), as = "text")
И все они возвращают одну и ту же ошибку.
Но если я вручную передам объект, как
api_request_content <- httr::content(query_abc123, as = "text")
Все работает как задумано. День Гуглинга ничего не дал, даже близко к ответу для меня на этот счет.