Posted at

curl入門 - GET編


はじめに

curlはCLIでHTTPリクエストなどを実行するためのコマンドです。

curl公式HP

いろいろできるcurlですが、今回はHTTPリクエストのGETに絞って書いていきます。

仕事でAPIレスポンスを確認する作業があったので、それの備忘録も兼ねてます。

コマンドの挙動はShangriLaAnime API Serverを使わせていただきながら確認しました。


基本コマンド

まずは2019年3期のアニメタイトルを取得してみます。

やり方は、curlコマンドの引数にAPIのリクエストURLを持たすだけ。

curl 'http://api.moemoe.tokyo/anime/v1/master/2019/3'

以下はレスポンス。長いので途中以降は省略してます。

[{"id":972,"title":"アグレッシブ烈子 シーズン2","title_short1":"アグレッシブ烈子","title_short2":"","title_short3":"","public_url":"https://www.netflix.com/jp/title/80198505","twitter_account":"retsuko_sanrio","twitter_hash_tag":"アグレッシブ烈子","cours_id":0,"created_at":"2019-06-30T14:03:33Z","updated_at":"2019-06-30T14:03:33Z","sex":0,"sequel":0,"city_code":0,"city_name":"","product_companies":"ファンワークス"},{"id":973,"title":"7SEEDS","title_short1":"7SEEDS","title_short2":"","title_short3":"","public_url":"http://7seeds.jp/","twitter_account":"7SEEDS_anime","twitter_hash_tag":"7seeds","cours_id":0,"created_at":"2019-06-30T14:03:33Z","updated_at":"2019-06-30T14:03:33Z","sex":0,"sequel":0,"city_code":0,"city_name":"","product_companies":"GONZO"},

...続く
]

返ってきた。簡単ですね。


jqを使う

curlだけだとレスポンスが平文なので、jsonを整形してくれるjqというライブラリを使います。

まずはHomebrewでインストール。

brew install jq

Homebrewを使用してない場合は、jqのダウンロードページを確認してください。

インストールできたら、curlコマンドの末にjqコマンドを追加します。

curl 'http://api.moemoe.tokyo/anime/v1/master/2019/3' | jq .

jq ..はrootの意味で、要するにレスポンス全部整形するよ、という感じです。

ここをjq '.items.name'とか様々な指定の仕方ができるんですが、詳細は公式HPや他記事をご参考ください。

※参考:jq コマンドを使う日常のご紹介 - Qiita

以下レスポンスです。

[

{
"id": 972,
"title": "アグレッシブ烈子 シーズン2",
"title_short1": "アグレッシブ烈子",
"title_short2": "",
"title_short3": "",
"public_url": "https://www.netflix.com/jp/title/80198505",
"twitter_account": "retsuko_sanrio",
"twitter_hash_tag": "アグレッシブ烈子",
"cours_id": 0,
"created_at": "2019-06-30T14:03:33Z",
"updated_at": "2019-06-30T14:03:33Z",
"sex": 0,
"sequel": 0,
"city_code": 0,
"city_name": "",
"product_companies": "ファンワークス"
},
{
"id": 973,
"title": "7SEEDS",
"title_short1": "7SEEDS",
"title_short2": "",
"title_short3": "",
"public_url": "http://7seeds.jp/",
"twitter_account": "7SEEDS_anime",
"twitter_hash_tag": "7seeds",
"cours_id": 0,
"created_at": "2019-06-30T14:03:33Z",
"updated_at": "2019-06-30T14:03:33Z",
"sex": 0,
"sequel": 0,
"city_code": 0,
"city_name": "",
"product_companies": "GONZO"
},
...続く
]

無事返ってきました。見やすいですね。


ファイルに出力する

レスポンスが多い場合、CLIの画面では見づらいことがあります。

なのでファイルに出力してレスポンスデータを操作しやすくしてみましょう。

使いオプションは-oです。

curl 'http://api.moemoe.tokyo/anime/v1/master/2019/3' -o response

これでresponseという名前のファイルにレスポンスが書き出されました。(ファイルは無ければ作成されます)

エディタ等で操作できて便利ですね。


まとめ

GETは、以下の書き方すればOK。必要によってjqはつけ外ししましょう。

curl 'http://api.moemoe.tokyo/anime/v1/master/2019/3' | jq .

他にもオプションがたくさんあるので、公式HPやcurl コマンド 使い方メモ - Qiitaを参考にしてみてください。


参考

curl公式HP

jq公式HP

curl コマンド 使い方メモ - Qiita

jqコマンドでjsonを扱う - Qiita

ShangriLaAnime API Server