问题描述
我目前正在从设备的 api 中检索一些数字数据。代码运行完美,没有错误,但是现在我想在单个代码中从多个设备获取数据,即如果我没有错的话,多个 api 调用。由于有 50 台设备,因此这些呼叫将超过 50 个。
我目前正在为一台设备运行以下代码:
url <-"https://example.com/api/GetDataBynum?num=ABCDevice.device#.parameter"
geturl <-httr::GET(url,add_headers(.headers=c('key'='')))
apidetails1<-content(geturl,"text",encoding ="UTF-8")
#这个是第二个设备号等等,效率低下
url2 <-"https://example.com/api/GetDataBynum?num=ABCDevice.device#.parameter"
geturl2 <-httr::GET(url2,add_headers(.headers=c('key'='')))
apidetails2<-content(geturl2,encoding ="UTF-8")
解决方法
创建一个 url 向量并在 lapply
中使用它:
library(httr)
url <- sprintf('https://example.com/api/GetDataBynum?num=ABCDevice.device%s.parameter',data$dataf)
lapply(urls,function(x) {
geturl <- GET(x,add_headers(.headers=c('key'='')))
content(geturl,"text",encoding ="UTF-8")
}) -> result
如果您想将数据合并到一个数据框中,您可以执行 result <- do.call(rbind,result)
。