こんにちは、たびとです。
最近、仕事で REST API を使うことが多くなってきました。 そこで、テスト用のモックが欲しいと思っていたら、 json-server を使って簡単に実現できることがわかりました。
今回は、WSL2 Ubuntu 22.04.1 or 20.04.5 で確認しました。
この記事の対象者
nodejs のインストール
まずは、アップデートを確認します。
$ sudo apt update
普通に apt でインストールすると、22.04.1 は v12.22.9、20.04.5 は v10.19.0 と版数が古過ぎたので、 最初に、apt で取得する版数が最新の安定版 v18.x になるように切り替えます。 ちなみに、v10.19.0 の場合、json-server のインストールに失敗しました。
$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
apt を使って、インストールします。
$ sudo apt install nodejs
版数が v18 であることを確認します。
$ node -v v18.12.1
json-server のインストール
次に npm を使って、json-server をインストールします。
$ sudo npm install -g json-server
データの用意
以下の内容を data.json として保存します。
{ "fruits": [ {"id": 1, "name": "Apple", "price": 100}, {"id": 2, "name": "Banana", "price": 150} ] }
json-server の起動
json-server の後に先ほど作成した data.json を引数として指定します。
$ json-server data.json \{^_^}/ hi! Loading data.json Done Resources http://localhost:3000/fruits Home http://localhost:3000 Type s + enter at any time to create a snapshot of the database
レコードの表示
別のウィンドウを開き、curl コマンドに GET を指定します。 URI の末尾に id を追加すると、指定のレコードのみを表示できます。
$ curl -L -X GET 'http://localhost:3000/fruits/' [ { "id": 1, "name": "Apple", "price": 100 }, { "id": 2, "name": "Banana", "price": 150 } ]
新しいレコードの追加
curl コマンドに POST を指定します。 データは JSON 形式で指定し、id は重複しない番号を指定します。
$ curl -L -X POST 'http://localhost:3000/fruits/' -H 'Content-Type: application/json' \ -d '{"id":"3","name":"strawberry","price":200}' { "id": "3", "name": "strawberry", "price": 200 }
レコードの変更
curl コマンドに PATCH を指定します。URI の末尾には変更する id を指定します。 ここでは、値段のみを 200 から 300 へ変更します。 PUT でも可能ですが、すべての項目を指定する必要があります。
$ curl -L -X PATCH 'http://localhost:3000/fruits/3' -H 'Content-Type: application/json' \ -d '{"price":300}' { "id": "3", "name": "strawberry", "price": 300 }
データの削除
curl コマンドに DELETE を指定します。URI の末尾には id を指定します。
$ curl -L -X DELETE 'http://localhost:3000/fruits/3' -H 'Content-Type: application/json' {}
Postman
curl コマンドが面倒な方は、Postman を使うと、GUI で実行することができます。
まずは、ip コマンドで IPアドレスを確認します。
$ ip a | grep eth0 6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 inet 172.20.251.213/20 brd 172.20.255.255 scope global eth0
次に、json-server に --host オプションの後に IP アドレスを付けて実行します。
$ json-server data.json --host 172.20.251.213 \{^_^}/ hi! Loading data.json Done Resources http://172.20.251.213:3000/fruits Home http://172.20.251.213:3000 Type s + enter at any time to create a snapshot of the database
Postman から GET でアクセスしてみます。 赤枠の箇所で、GET を選択し、URI を指定して、Send ボタンを押すと、 curl コマンド同様にレコードの情報を取得することができます。
まとめ
json-server を使って、REST API のモックアップを簡単に実現する例を紹介しました。 curl コマンドだと、何度も使う場合は、毎回リクエストを作る必要があるので面倒ですが、 Postman を使うと、何度も使うリクエストはヘッダやパラメータも保存できるので、 REST API の確認には必需品となります。 Postman の詳しい使い方は、またの機会にしたいと思います。
では、皆さん、よい旅を。