curl を使って JSONデータをPOSTする
WEBアプリの開発で テストの為に JSONのデータをPOSTしたいことがありますが、
curl を使ってコマンドラインからデータをPOSTすることが出来ます。
いつも書き方を忘れるので 備忘録として記録。
curl で JSON データをPOST
% curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"user":{"first_name":"firstname","last_name":"lastname","email":"email@email.com","password":"app123","password_confirmation":"app123"}}' http://localhost:3000/api/1/users
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d {JSONデータをここに記述} {URIをここに記述}
という形式です。
curl のダウンロード先
curl は *NIX系のOSだとすでに入っていると思いますが、 linux なら yum install curl や apt-get install curl でインストールできますし、
http://curl.haxx.se/download.htmlから入手できます。
ここには windows版もありますので windows使いの方も入れておいて損はないでしょう。
windows 版 curl で JSONデータを送る場合
コマンドラインからは 複数行に渡る 記述が出来ないので -d の後の部分は “JSON中身” を1行で渡す必要がありますが、
この時 JSON中身の “ を \” と \でエスケープして置く必要があるようです。
めんどうくさ。。
windows版の場合は @filename でファイルにJSONの内容を書いておくほうが楽かもしれません。
> curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d "{\"user\" :{\"first_name\":\"firstname\",\"last_name\":\"lastname\",\"email\":\"email@email.com\",\"password\":\"app123\",\"password_confirmation\":\"app123\"}}" http://localhost:3000/api/1/users
@filename でファイルにJSONの内容を書いておくというのは、 例えば 中身がJSONの内容のファイル: jsondata.txt
というファイルを作ります。そしてそのファイル名を指定して curl を実行します。
> curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d @jsondata.txt http://localhost:3000/api/1/users
というように実行します。 jsondata.txt の前に@を付けて指定します。