r-如何正确格式化POST请求的正文



我正在通过REST API向网站添加页面。我在bash中使用了以下内容,它很有效。它将创建一个具有指定标题和正文内容的新页面。

token="dfrer4e"
curl -X POST -H "Authorization: Bearer $token" 
https://api/pages 
-d wiki_page[title]=New title 
-d wiki_page[body]=New content

我正在尝试使用R包httr来做同样的事情。

library(httr)
set_config(add_headers("Authorization"=paste0("Bearer dfrer4e")))

当我只使用标题时,这是有效的。它会创建一个具有指定标题的新页面。

POST(url="https://api/pages/",body="wiki_page[title]=New title")

但我不知道如何将身体部分也包括在内。

尝试次数:

我试着把身体作为一个向量,但它不能正常工作。它将两者结合在标题中。尸体仍然是空的。

POST(url="https://api/pages/",body=c("wiki_page[title]=New page","wiki_page[body]=New content"))

我尝试将正文作为列表提供,但它返回了一个错误。

POST(url="https://api/pages/",body=list("wiki_page"=list("title"="New title","body"="New content")))
Error in curl::handle_setform(handle, .list = req$fields) : 
Unsupported value type for form field 'wiki_page'.

我试图将主体提供为JSON,但它返回了一个状态400错误。

j <- jsonlite::toJSON(list("wiki_page"=list("title"="New title","body"="New content")))
POST(url="https://api/pages/",body=j,encode="json")

不幸的是,我无法创建一个可复制的示例。

将该命令转换为httr的正确方法是

POST(url="https://api/pages/", 
body=list(
"wiki_page[title]" = "New page", 
"wiki_page[body]" = "New content")
)

您需要将实体中的名称和值分开,以便对值进行正确编码。

相关内容

  • 没有找到相关文章

最新更新