Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

restfulなサービスにcurlでアクセスする

みんな大好きcURL
最近、下位10%を弾くテストなんて話が話題になりましたが、アレでも使える話です。

ログイン

curl -c cookie.txt -d "user=kaboom" -d "pass=password" "http://example.com/login"
curl -b cookie.txt "http://exapmle.com/admin/get_data"

1行目でログイン。デベロッパツール等を用いて実際にログインするときのIDとパスワードのパラメータ名と form の POST 先 URL を調べ、-d オプションとURLを適当にして実行。ログインに成功したら、その時入手した cookiecookie.txt に保存する。

2行目でデータ取得。さっき入手したばかりの cookie を手みやげにする。

データ投入

RESTfulなサイトを作り、そこにデータを放り投げる場合を考えます。

たとえば以下のようなクエリを受け付けるURIがあったとします。

   # POST /tasks/id.:format
    task = Task.create( { :name => params[:name], :value => params[:value] } )

この場合、以下のようなrubyスクリプトを叩いてあげれば複数のデータの挿入をする事が出来ます。

def push_sensing_data
  url = "http://localhost:3000/mpw/tasks.xml"
  sensing = rand(100) + 10
  system "curl -X POST -d 'name=01' -d 'value=#{sensing}' #{url}"
  return
end

15.times do
  push_sensing_data
end

curl -Xは、HTTP のリクエストメソッドを引数としてとります。
今回はデータ投稿なのでpost。
やった事はありませんが、deleteもいけるみたいです。