curl を使って Web API をテストする(2)
前回は Web APIをテストする時によく使う curl のオプションについて解説しました。
* [curl を使って Web API をテストする(1)](http://lovepeers.org/2014/06/30/curl-web-api/)
今回はよく使うシチュエーションをいくつか挙げて、curl の具体的な使い方を解説します。
## GETリクエストを送信
一番基本的なGETリクエスト送信。
リダイレクトが発生することを考慮して、”-L” オプションを付けておくと良いでしょう。
curl -L http://api.examples.com/
レスポンスヘッダも見たい時は、”-i” オプションを付けます。
curl -i -L http://api.examples.com/
## フォームに情報を入れてPOSTで送信
例えば以下のようなHTMLがある時、
最初のテキスト入力(first_name)に「ふが」、2番目のテキスト入力(last_name)に「ほげ男」と入れた状態で、curlでフォームを送信するのは、以下のようになります。
curl -d first_name=ふが -d last_name=ほげ男 http://api.examples/post.php
ここでも、必要に応じて “-L” や “-i” オプションを付けましょう。
## ログインフォームにユーザ名、パスワードを入力し、送られて来たCookieを保存
サーバから (Set-Cookie レスポンスヘッダで) Cookie が送られて来た時、-c オプションで指定したファイルに Cookie を保存することが出来ます。
ログインフォームでユーザ名、パスワードを入力し、認証に成功したら Cookie を送って来るサイトでは、以下のようにして Cookie を保存しておきます。
curl -d username=hogehoge -d password=fugafuga -c cookie.jar http://api.examples.com/login.php
## Cookieを送信して認証後のページにアクセス
Cookie をサーバに送る時は、-b オプションを使います。-c オプションでサーバから送られて来た Cookie を保存している時は、-b オプションにそのファイルを指定します。
ログイン時に送られて来た Cookie を cookie.jar というファイルに保存している時、認証後のページにアクセスする時は -b cookie.jar を付けます。
curl -b cookie.jar http://api.examples.com/top.php
## JSONデータをPOSTする
POSTで JSON データを送信する時は、ふつうの POST と同様に -d オプションを使います。
リクエストヘッダに “Content-Type: application/json” を付けないとサーバが JSONと認識しない時は、-Hオプションで指定します。
curl -H “Content-Type: application/json” -d ‘{“root”:[{“title”:”テスト1″, “url”: “http://examples.com/test1”}, {“title”:”テスト2″, “url”:”http://examples.jp/test2″}]}’ http://api.examples.com/postjson.php