【问题标题】:Using httr package, setting a header where the header name is a variable使用 httr 包,设置一个标题,其中标题名称是一个变量
【发布时间】:2016-02-01 21:45:48
【问题描述】:

我想在使用 R httr 包的请求中设置一个标头并设置一个标头,当我在变量中有标头的名称时。

我想做这样的事情:

tokenName = 'X-Auth-Token'

get_credentials_test <- function (token) {

  url <- paste(baseUrl,"/api/usercredentials", sep = '')
  r <- GET(url, add_headers(tokenName = token))
  r
}

但是,上面的代码似乎设置了一个名为 tokenName 的标头。

如果我执行以下操作,它确实有效:

get_credentials_test <- function (token) {

   url <- paste(baseUrl,"/api/usercredentials", sep = '')
   r <- GET(url, add_headers('X-Auth-Token' = token))
   r
}

但如果标头的名称发生更改并且添加标头的要求被大量地散布在代码周围,我希望有一些灵活性。我不确定是否可以添加包含变量的标头,但这是我想做的。

【问题讨论】:

    标签: r httr


    【解决方案1】:

    您可以将标头创建为命名向量,然后将其作为.headers 参数传递:

    h <- c(token)
    names(h) <- tokenName
    
    r <- GET(url, add_headers(.headers = h))
    

    虽然这是因为add_headers 采用.headers 参数(see here),但调用具有任意参数名称的函数的更通用替代方法是do.call

    h <- list(token)
    names(h) <- tokenName
    
    r <- GET(url, do.call(add_headers, h))
    

    【讨论】:

      【解决方案2】:

      structure() 很容易:

      get_creds <- function(base.url, path, header.name, token) {
          url <- paste0(base.url, path)
          header <- structure(token, names = header.name)
          r <- httr::GET(url, httr::add_headers(header))
          r
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多