読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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

unix ruby

みんな大好き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もいけるみたいです。