0
0

【備忘録】WEB APIをたたく

Last updated at Posted at 2024-04-05

はじめに

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に活用させるため色々実験します。

0
0
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
0
0