在 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 调用,并带有多个调用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 R 中使用 httr 对 shibboleth 多主机名网站进行身份验证