在单个 R 代码中从设备获取多个 api 调用

问题描述

我目前正在从设备的 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")

有没有办法在一个代码中运行多个 api?

解决方法

创建一个 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)