この curl 呼び出しは、Digital Ocean に新しいドロップレットを作成するために機能します
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()
するとエラー メッセージが表示され続けます
ドロップレットの作成に無効な ssh キー ID を指定しました。