はじめに
WEB-API (REST-API)を試したくなり、自宅PCでお手軽にできる方法で実験。
今回は GUI から(postman)ではく、コマンドラインからREST-APIの連続実行を可能とするため、newmanから実行する環境を構築~実行までを行います。
目次
1.環境構築
2.お試し実行
3.感想
1.環境構築
・ WSL2インストール
・ node.js インストール
・ npm インストール
・ newman インストール
・ postman インストール
(1) WSL2インストール
コマンドプロンプトで下記のコマンドを実行するだけ。簡単にWSL2(ubuntu)が使えるようになりました。。。
wsl --install
この後、PCの再起動を行います(ガイドに従うだけ)。
インストール後の確認
C:\Users\xxxxx> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
C:\Users\xxxxx>wsl --version
WSL バージョン: 2.1.5.0
カーネル バージョン: 5.15.146.1-2
WSLg バージョン: 1.0.60
MSRDC バージョン: 1.2.5105
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22631.3296
(2) node.js インストール-1回目
apt でインストールしましたが、インストールされたバージョンが古く(v12)、newman が動作しなかった。後ほど最新版をインストールしました((5) node.js インストール-2回目)。
$ sudo apt install nodejs
後で入れ直すことになるのに・・・
(3) npm インストール
$ sudo apt install npm
(4) newman インストール
$ sudo npm install -g newman
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: 'newman@6.1.2',
npm WARN EBADENGINE required: { node: '>=16' },
npm WARN EBADENGINE current: { node: 'v12.22.9', npm: '8.5.1' }
npm WARN EBADENGINE }
:
:
:
node は 16以上って事で WARN が表示されている・・・
(2)でインストールした node.js は v12 でした。
(5) node.js インストール-2回目
最新版のインストールに難儀していたが、nパッケージを使うと良いらしい。
nパッケージ構築には node.js, npm が前提となるので先にインストールした node.js, npm は残しつつ nパッケージをインストール
$ npm -g install n
続いて node.js(安定版)インストール
$ sudo n stable
npmでインストールしたときは v12 でしたが、v20 になりました。
$ node -v
v20.12.1
最初に入れた node.js, npm は削除しておく。
$ sudo apt purge -y nodejs npm
(5) postman インストール
普通にデスクトップアプリのpostmanをインストールします。
2.お試し実行
・REST-APIを提供するサイトを見つける
・postmanで試す
・newman でpostmanで試したスクリプトを実行する
(1) REST-APIを提供するサイトを見つける
NHKで番組表APIが利用できるのでお試し利用する。
(2) postman で試す
⇒ 「status=200」が返ると"Successful POST request"を出力させる
① "Program List API"
② "Now On Air API"
③ テストスクリプト作成
③ コレクションのエクスポート
(3)
(2)③で出力したスクリプトを newman で実行する。
$ newman run sample_for_me.postman_collection.json
newman
sample_for_me
→ ProgramListAPI
GET https://api.nhk.or.jp/v2/pg/list/130/g1/2024-04-05.json?key=******************************** [200 OK, 109.56kB, 189ms]
✓ Successful POST request
→ NowOnAirAPI
GET https://api.nhk.or.jp/v2/pg/now/130/g1.json?key=******************************** [200 OK, 3.39kB, 94ms]
✓ Successful POST request
┌─────────────────────────┬────────────────────┬───────────────────┐
│ │ executed │ failed │
├─────────────────────────┼────────────────────┼───────────────────┤
│ iterations │ 1 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ requests │ 2 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ test-scripts │ 2 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ prerequest-scripts │ 0 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ assertions │ 2 │ 0 │
├─────────────────────────┴────────────────────┴───────────────────┤
│ total run duration: 356ms │
├──────────────────────────────────────────────────────────────────┤
│ total data received: 112.07kB (approx) │
├──────────────────────────────────────────────────────────────────┤
│ average response time: 141ms [min: 94ms, max: 189ms, s.d.: 47ms] │
└──────────────────────────────────────────────────────────────────┘
$
サマリーでるんですね、凄い。
3.感想
これは便利。一通りのやり方が試せたので、CI/CDに活用させるため色々実験します。