如何正确格式化 body of POST 请求
How to correctly format body of POST request
我正在通过 REST API 向网站添加页面。我在 bash 中使用以下内容并且有效。它创建一个具有指定标题和 body 内容的新页面。
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")
但我不确定如何也包含 body 部分。
尝试次数:
我尝试将 body 作为矢量提供,但它无法正常工作。它将两者结合到标题中。 body 保持为空。
POST(url="https://api/pages/",body=c("wiki_page[title]=New page","wiki_page[body]=New content"))
我尝试将 body 作为列表提供,但它 returns 出错了。
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'.
我试图将 body 提供为 JSON,但它 returns 出现状态 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")
)
您需要将正文中的名称和值分开,以便对值进行正确编码。
我正在通过 REST API 向网站添加页面。我在 bash 中使用以下内容并且有效。它创建一个具有指定标题和 body 内容的新页面。
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")
但我不确定如何也包含 body 部分。
尝试次数:
我尝试将 body 作为矢量提供,但它无法正常工作。它将两者结合到标题中。 body 保持为空。
POST(url="https://api/pages/",body=c("wiki_page[title]=New page","wiki_page[body]=New content"))
我尝试将 body 作为列表提供,但它 returns 出错了。
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'.
我试图将 body 提供为 JSON,但它 returns 出现状态 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")
)
您需要将正文中的名称和值分开,以便对值进行正确编码。