ヘッダを見る
リクエストヘッダ、レスポンスヘッダ両方表示する
curl --verbose http://www.knet.ne.jp/~ats/z/ka/kita.htm >/dev/null
リクエストもレスポンスも通信内容をすべてダンプして表示する
curl --trace-ascii - http://google.com/
- 引数にログを書き出すファイルを指定する
- 引数に
-
を指定すると標準出力に書き出し - 引数に
/dev/stdout
を指定している例も見かけるが、やってはいけない。Linuxで結果を更にファイルにリダイレクトしたときにおかしな動作になった(毎回先頭から上書きされていた。Macだと再現しなかった) - リクエストヘッダだけでなくリクエストボディの内容も確認したいときはこれを使うしかないっぽい?
from: https://superuser.com/questions/291424/how-do-you-display-post-data-with-curl
BASIC認証を行う
curl -v -u admin:password http://localhost:3000/photos/447.json
Cookieベースの認証を行う
# 認証
curl -c cookie.txt -d email_address=homeless@example.jp -d password=qwertyui http://localhost:3000/sessions/login.json
# 取得したcookieを使ってアクセス
curl -b cookie.txt http://localhost:3000/activities.json
リクエストヘッダを付与する
curl -v -X POST -H "Content-type: application/json" -d data=hoge http://localhost:3000/send.json
POSTでリソースを作成する
例としてRailsのScaffoldingで生成されるREST APIに以下のリクエストを投げると、itemリソースがひとつ作成される
curl -v -X POST --data "country=US¤cy=USD&locale=en-US&locationSchema=iata&grouppricing=true&originplace=SFO-iata&destinationplace=BOS-iata&outbounddate=2016-05-23&inbounddate=2016-05-24&adults=1&children=0&infants=0&cabinclass=Economy" "http://api.skyscanner.net/apiservices/pricing/v1.0?apiKey=YOURAPIKEY"
PUTでリソースを更新する
例としてRailsのScaffoldingで生成されるREST APIに以下のリクエストを投げると、idが一致するphotoリソースが更新される
curl -v -H "Content-Type: application/json" -X PUT --data '{"id": 447, "photo":{"hidden": true}}' -u admin:password http://localhost:3000/photos/447.json
リクエストボディ
{
"id": 447,
"photo": {
"hidden": true
}
}
ハッシュ(辞書?)形式のパラメータを渡す
Request body の内容をパイプから読み込む
-d @-
で標準入力からデータを読み込める
echo "{\"fuge\": 5678}" | curl -v -H "Content-type: application/json" -d @- http://localhost:9292/items
Request body の内容をヒアドキュメントから読み込む
-d @-
で標準入力からデータを読み込める
curl -v -H "Content-type: application/json" -d @- http://localhost:9292/items <<EOF
{
"hoge": 1234
}
EOF
通信ログを標準出力に出して、レスポンスボディはファイルに保存する
-v
と-o
を組み合わせる
curl -v -o response.json http://localhost:9292/items
レスポンスボディの最後に改行をつける
-w
オプションを使う。
curl -w '\n' http://localhost:9292/hello
参考: https://codeday.me/jp/qa/20181224/30462.html
UserAgentを指定する
-A
でユーザエージェントを指定できる
例
curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:72.0) Gecko/20100101 Firefox/72.0" -v "http://akizukidenshi.com/catalog/g/gP-10958/" | iconv -f sjis -t utf8