LoginSignup
3
2

More than 3 years have passed since last update.

【最新サービス試用⑧】リクエスト管理やJSON出力結果整形等に便利なcurl拡張コマンドツールの「curlx」を試用。

Posted at
  • 日々輩出される素晴らしき最新サービスを素早く試して、不鮮明な先見性を堂々と誇示する記事第八弾。
  • 歴史的偉人の集中力の記事の、収集作業に精を出している生活。
  • 今回は、curlでの出力の際に、Terminal上であらゆる高機能な作業が可能な「curlx」を試用することにしよう。

概要

  • レスポンス確認やAPI通信の際の際に用いる「curl」のリクエストの管理が捗るコマンドツール。
  • 「JSONでの出力結果の整形」や「リクエストのコレクション(グループ化)」等の機能を、GUIツール等を利用せずに、ターミナル内のみで可能。
  • GUIツールの「Postman」やJSON整形コマンドツールの「jq」の両方の機能を備えたようなツール。
  • 公式サイト
  • 公式Github

特徴

出力結果の整形

  • 可読が容易ではないcurlでのJSON出力結果を、cxでは整形して、見やすく表示してくれる。
  • jqを利用することなく、標準で整形してくれる。

リクエスト履歴の視覚化

  • リクエスト履歴の確認が容易に可能であることに加え、ステータスや通信形式、時間等の詳細情報が表として、わかりやすく確認できる。

リクエストのコレクション(グループ)化

  • リクエストをカテゴリごとにグループ化できるため、「よく投げるコマンドのエイリアス登録」や「内容別でのリクエストのグループ管理」が可能。
  • Postmanでのコレクション機能を、ターミナル内で利用が可能。

結果

  • テストAPIとして、LivedoorさんのWeather Hackを利用。

  • 下記のように、curlでは見づらいjson形式や文字化けが、簡単なコマンドで見やすくなる。

test.png

  • 通信形式やステータス結果等も含んだ、わかりやすい履歴の表示も可能。

status.png

  • よく使う出力等を、グループ化で整理して、簡単なコマンドでリクエストが可能。

collection_2.png

作業環境

  • Amazon Linux 2
  • Node.js v10.16.0
  • npm 6.9.0
  • Node.js環境が利用できれば、MacやWindowsでも可能。

インストール

# Node.jsのバージョン確認
$ node -v

# npmのバージョン確認
$ npm -v
  • 確認後、下記のコマンドをうち、「curlx」のインストールを行う。
# curlxのインストール
$ sudo npm install curlx -g

# バージョン確認
$ cx version

基本操作

  • curlxの基本操作は、下記。
    • 基本的にcurlコマンドをcxに置き換えるだけで可能。
内容 コマンド
通常リクエスト cx 接続先URL
※オプション指定なしで、ヘッダー出力やjson整形が可能。
リクエスト(オプション付き) cx -オプション URL
オプションは、curlと同様なため、curlをcxに置き換えるだけ。
例 : cx -X GET URL
リクエスト履歴確認 cx history
リクエストのグループ(コレクション)化 cx new collections
実行後、いくつかの質問に回答していく形で、作成していく
詳細は、下記の操作例を確認。
作成コレクションへのリクエストの追加 cx new request
コレクション作成同様、質問形式で追加していく
詳細は、下記の操作例を確認。
コレクション一覧 cx collections
idやコレクションリクエストでの実行 cx run <id or collection_id>
詳細は、下記の操作例を確認。
リクエストやコレクションの削除 cx delete <id or collectionname>
詳細は、下記の操作例を確認。
ヘルプページ確認 cx help
バージョン確認 cx version

操作例

通常リクエスト

  • 下記のコマンドをうち、URLでの通常リクエストを行う。
    • オプションは、curlと同様に扱えるため、cxに置き換えるだけでよい。
# 通常リクエスト
$ cx http://weather.livedoor.com/forecast/webservice/json/v1?city=471010

# オプション指定でのリクエスト
$ cx -X GET http://weather.livedoor.com/forecast/webservice/json/v1?city=471010

コレクションの作成〜実行

  • 下記のコマンドをうち、cxコマンドをグループ化することで、任意の名前とidでリクエストが可能。
# コレクション(グループ)を作成
$ cx new collection

✔ Name of your new collection … コレクション名(例:getWeather)入力

This collection already exists
✔ Would you like to add a new request to getWeather … リクエスト追加確認(例:yes)

✔ Enter complete request  eg: cx -X GET https://httpbin.org/get … 実行コマンド入力(例:cx -X GET URL)

✔ Give a name for your request … リクエスト名(例:getOkinawa)

# コレクション一覧確認
$ cx collections

┌────────────┬────────────────────┬────────┬──────────────────────────────┐
│ id         │ name               │ method │ url                          │
├────────────┼────────────────────┼────────┼──────────────────────────────┤
│ y2Q9JCOjL  │ getOkinawa         │ get    │ http://weather.livedoor.com… │
└────────────┴────────────────────┴────────┴──────────────────────────────┘


# id名でのリクエスト実行
# まず、history(履歴)内のid名での実行
$ cx history

┌────────────┬────────┬──────────────────────────────┬────────┬────────────┐
│ id         │ method │ url                          │ status │ timestamp  │
├────────────┼────────┼──────────────────────────────┼────────┼────────────┤
│ H0yIigcQv  │ get    │ http://weather.livedoor.com… │ 200    │ 2019-7-13  │
│            │        │                              │        │ 12:51 PM   │
├────────────┼────────┼──────────────────────────────┼────────┼────────────┤

$ cx run H0yIigcQv

{
  "pinpointLocations": [
    {
      "link": "http://weather.livedoor.com/area/forecast/4720100",
      "name": "那覇市"
    },
    {


# コレクション内のリクエストidでの実行
# ※コレクション内のidは、コレクション名も同時に明記する必要がある。
$ cx run getWeather y2Q9JCOjL

{
  "pinpointLocations": [
    {
      "link": "http://weather.livedoor.com/area/forecast/4720100",
      "name": "那覇市"
    },

コレクションへのリクエスト追加

  • 下記のコマンドをうち、既存コレクションに新規リクエストを追加
# コレクション確認
$ cx collections

┌────────────┬────────────────────┬────────┬──────────────────────────────┐
│ id         │ name               │ method │ url                          │
├────────────┼────────────────────┼────────┼──────────────────────────────┤
│ y2Q9JCOjL  │ getOkinawa         │ get    │ http://weather.livedoor.com… │
└────────────┴────────────────────┴────────┴──────────────────────────────┘

# リクエストの新規追加
$ cx new request

✔ Name of your new collection … コレクション名(getWeather)入力

✔ Enter complete request  eg: cx -X GET https://httpbin.org/get … 実行コマンド(例:cx URL)

✔ Give a name for your request … リクエスト名(getOsaka)

# コレクション一覧再確認
$ cx collections

┌────────────┬────────────────────┬────────┬──────────────────────────────┐
│ id         │ name               │ method │ url                          │
├────────────┼────────────────────┼────────┼──────────────────────────────┤
│ y2Q9JCOjL  │ getOkinawa         │ get    │ http://weather.livedoor.com… │
├────────────┼────────────────────┼────────┼──────────────────────────────┤
│ nG3nzD53k  │ getOsaka           │ get    │ http://weather.livedoor.com… │
└────────────┴────────────────────┴────────┴──────────────────────────────┘

リクエストidやコレクションidの削除

  • 下記のコマンドをうち、リクエストidやコレクションの削除を行う。
# id名でのリクエスト削除
$ cx delete H0yIigcQv

# コレクション内のid名でのリクエスト削除
$ cx delete getWeather:y2Q9JCOjL

操作履歴やコレクション確認

  • curlxの操作履歴やコレクション一覧は、下記のファイルで確認できる。
    • curlxの履歴やコレクションといった情報は、ルートフォルダの「cxdb」というフォルダに保存されている。
    • 簡単な履歴やコレクション確認の際は、上記の操作例での操作方法で可能。
# 操作履歴格納ファイルの中身確認
$ less ~/cxdb/history.json

{
  "history": [
    {
      "id": "UsVI7Oq9Y",
      "method": "get",
      "command": "curl -i \"http://weather.livedoor.com/forecast/webservice/json/v1?city=471010\"",
      "url": "http://weather.livedoor.com/forecast/webservice/json/v1?city=471010",
      "status": "200",
      "ts": "2019-7-12 11:58 PM"
    },
    {
      "id": "So_ybzFn3",
      "method": "get",
      "command": "curl -i \"http://weather.livedoor.com/forecast/webservice/json/v1?city=471010\"",
      "url": "http://weather.livedoor.com/forecast/webservice/json/v1?city=471010",
      "status": "200",
      "ts": "2019-7-13 12:01 AM"
    },
# コレクション一覧ファイルの中身確認
$ less ~/cxdb/collection.json

{
  "collections": {
    "getWeather": [
      {
        "id": "y2Q9JCOjL",
        "name": "getWeather",
        "method": "get",
        "command": "curl -i \"-X\" \"GET\" \"http://weather.livedoor.com/forecast/webservice/json/v1?city=471010\"",
        "url": "http://weather.livedoor.com/forecast/webservice/json/v1?city=471010"
      }

まとめ

  • 今回は、curlでのAPI結果整形ということで、「Terminalのみでの利用幅の拡大」による「パソコンの容量削減」を感慨深く染みながら、記事を書く。
  • 「利用機能による、GUIツールとCUIツールの併用」の誓いは、すぐさま「日毎の気分利用」に変化することを確信。
  • しばらく、この賢人ツールとの付き合いが続くと感じたため、より一層開発者礼拝を強化。

参考

3
2
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
3
2