12
8

More than 5 years have passed since last update.

curlでAPIを叩く

Last updated at Posted at 2014-06-11

curlでAPIを叩く

  • webでAPI作ったりしてる時、修正したら確認用にいちいちブラウザで叩いたりするのがめんどくさい。
  • jmeterでシナリオ書いたり、Mechanizeとかでスクレイピング書くほどでもない。
  • というかその方がめんどくさい。本末転倒。

みたいな時はcurl使えば良いと思う。

設定ファイル

~/.curlrc に置いておけばデフォルトで設定読んでくれるらしいけど、
オプションで設定指定できるのでそれで。

詳細はman curlするかググって。

curl.cnf
# UAの変更
-A = "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25"

# カスタムヘッダつけたり
-H X-HOGEHOGE:123
-H X-FOOBAR:piyo

# basic認証用
--user user:pass

# ダウンロード進捗を表示しない
--silent

# リダイレクト辿る
-L

# レスポンスヘッダをstderrに吐く
-D /dev/stderr

こんな感じにしておいて

api_access.sh
#!/bin/bash

URLS=(
    localhost/test1.php.json
    localhost/test2.php.json
    localhost/test3.php.json
    localhost/test4.php.json
)

for x in ${URLS[@]}; do
    curl -K curl.cnf $x | jq .
done

みたいな。

とりあえず↑だとjson返すAPIを想定してjqに流して整形表示してるけど、
html+DOM で真面目に解析するなら、ruby + Nokogiri とかでぱぱっとvalidateするやつ書いてそれに食わせても良いかも。

ちなみにpostでデータ送ったりも出来るけど、
更新処理とかのロジックのとこは真面目にチェックしたいので使ってない。

その辺はまぁ、お好みで。

1秒毎に叩く

もういちいちコンソールに移ってシェル叩くのもめんどくさい。
勝手にコンソールに結果垂れ流してほしい。って時。

bash
while sleep 1; do clear && date +"%Y%m%d_%H%M%S" && ./api_access.sh; done;

正常終了でsleepは0返すからこれで無限ループになるはず。

ちなみに

当然外部のAPIも叩けるので、
ちょっと手加えれば超カンタンにdos攻撃できちゃうけど、そういう事はしないように。

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8