Posted at

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

More than 1 year has passed since last update.


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"