curl で作る簡易 API クライアント


too long; don't write :P

なんか色々かけるかと思ったけど、あまり書くことが無いことに気がついた←
のでスニペットをペッてして終わりにする。

最近というか、定期的に curl のオプション集 にイイネが付くから、こういうのも需要あるかな〜と思った次第。

あまり凝った事をせずに、ある程度の部分を決め打ちで作ってしまうようなモノであれば curl だけでも十分実用的な API クライアントができた。Cookie を使っているのは認証にセッションを使っているからだけど、token で認証するのであれば -H オプションでヘッダーを追加すれば OK。
他にも、リクエストが json 形式をサポートしていなければ --data-urlencode オプションで個別に渡せば対応できる。

readonly COOKIE_FILE=/tmp/cookie.txt

post() {
  local item_id=$1
  local value=$2
  local params=$(cat <<-EOS
{ "some": "${value}",
"number": 123,
"array": [1,2,3] }
EOS
)

  curl -c $COOKIE_FILE -b $COOKIE_FILE \
    -X POST \
    -H "Content-Type: application/json" \
    --data "${params}" \
    https://example.com/api/items/${item_id}
}

post 6 "value with space"