这个卷曲调用可以在Digital Ocean上创建一个新的Droplet
curl -X POST "https://api.digitalocean.com/v2/droplets" \
-d '{"name":"test3","region":"nyc2","size":"512mb","image":5562742,"ssh_keys":[89103]}' \
-H "Authorization: Bearer $TOKEN"
-H "Content-Type: application/json"
但是,我只是在给出参数httr::POST()
时才能获得ssh_keys
请求。在上面的方法中,ssh_keys
参数(如果给定)必须是数组。
我假设参数列表可以传递给正文,例如,ssh_keys
参数在列表中
args <- list(name="test3", region="nyc2", size="512mb", image="5562742", ssh_keys=list(891111))
POST(url, config=auth, body=args)
我认为这就是内部发生的事情:
jsonlite::toJSON(args)
[1] "{ \"name\" : [ \"test3\" ], \"region\" : [ \"nyc2\" ], \"size\" : [ \"512mb\" ], \"image\" : [ \"5562742\" ], \"ssh_keys\" : [ [ 89103 ] ] }"
我认为这样可行,但也许这不是发生了什么?摆弄encode
中的POST
参数似乎没什么帮助。
curl调用在终端上运行,但使用httr::POST()
我不断收到错误消息
您为Droplet创建指定了无效的ssh密钥ID。
答案 0 :(得分:1)
在这种特定情况下,
x <- jsonlite::toJSON(args, auto_unbox=TRUE)
cat(x)
似乎返回正确的格式(假设问题不在于标题),所以它们
POST(url, config=auth, body=x)
应该发送正确的请求。
答案 1 :(得分:1)
可能是这样的:
req <- POST(
url = "https://api.digitalocean.com/v2/droplets",
body = toJSON(args, auto_unbox=TRUE),
add_headers (
"Content-Type" = "application/json",
"Authorization" = paste("Bearker", TOKEN)
)
)