在 R 中使用 httr 翻译 curl 调用,并带有多个调用

Posted

技术标签:

【中文标题】在 R 中使用 httr 翻译 curl 调用,并带有多个调用【英文标题】:Translate curl call using httr in R, with multiple calls 【发布时间】:2021-08-13 05:12:16 【问题描述】:

我正在尝试“翻译”下面的 curl 调用,以便我可以使用 R(使用 httr)进行 API 调用,但没有成功。我试过curlconverter 并使用建议here。但是,我要访问的 API 是多层的,而且括号里到处都是,这使得转换变得复杂。对动态转换此循环逻辑的函数有何建议?

卷发:

curl -X POST 'https://api.notion.com/v1/databases/897e5a76ae524b489fdfe71f5945d1af' \
-H 'Authorization: Bearer '"$NOTION_API_KEY"'' \
-H 'Notion-Version: 2021-05-13' \
-H "Content-Type: application/json" \
--data '
      "filter": 
        "or": [
          
            "property": "In stock",
                    "checkbox": 
                        "equals": true
                    
          ,
          
                    "property": "Cost of next trip",
                    "number": 
                        "greater_than_or_equal_to": 2
                    
                
            ]
        ,
      "sorts": [
        
          "property": "Last ordered",
          "direction": "ascending"
        
      ]
    '

期望的结果(功能)

api_call(page, token, filters)

【问题讨论】:

包括这个? curl.trillworks.com/#r 【参考方案1】:

这个问题有点难以回答,因为您拥有访问密钥,因此没有人可以测试代码以确保其正常工作。但是,就简单地将 curl 调用转换为 httr 代码而言,我认为以下代码会这样做。

library(httr)
library(jsonlite)

# Create the body of the POST request
json_body <- list(
  "filter" = list(
    "or" = list(
      list(
        "property" = "In stock",
        "checkbox" = list(
          "equals" = "true"
        )
      ),
      list(
        "property" = "Cost of next trip",
        "number" = list(
          "greater_than_or_equal_to" = 2
        )
      )
    )
  ),
  "sorts" = list(
    list(
      "property" = "Last ordered",
      "direction" = "ascending"
    )
  )
)

# Make post request
request <- POST(
  url = "https://api.notion.com/v1/databases/897e5a76ae524b489fdfe71f5945d1af", 
  add_headers("Authorization" = paste("Bearer", notion_api_key),
              "Notion-Version" = "2021-05-13"),
  body = json_body, 
  encode = "json"
)

就定义一个动态创建主体的函数而言,这只是一个与上述示例类似的格式化过滤器的问题。

【讨论】:

以上是关于在 R 中使用 httr 翻译 curl 调用,并带有多个调用的主要内容,如果未能解决你的问题,请参考以下文章

将 curl OAuth2 令牌请求转换为 httr

使用 httr 发布请求

使用 httr R 包发送 POST 请求

如何在 R 中使用 httr 对 shibboleth 多主机名网站进行身份验证

如何使用 R 中的 httr 包使用 Localytics 中的数据提取数据?

在 Windows 7 64 上的 R studio 版本 0.99.489 中运行库(httr)时出错