JSONを返すMockサーバーをシェルからサクッと建てる


JSONのレスポンスを返すサーバーが急に必要になったら...

ncコマンドを使ってMockサーバーを建てることができます🏗🗼
(Macとかだとncコマンドはデフォルトで入っていたりします。)
余計なライブラリ等入れたりしないでモックサーバー建てたい場合にかなり便利に使える方法をご紹介します!

Step1. JSONを用意する

下記のようなJSONの内容のファイルを用意します。

response.json
{
  "text": "Hello World!",
  "status": 200,
  "error": null
}

Step2. コマンド実行

上記のファイルを指定するように下記のコマンドを実行します。

$ bash -c "trap exit INT; while :; do (echo -e HTTP/1.1 200 OK\n;echo -e Content-Type: application/json; echo; cat response.json) | nc -l 8080; done"

コマンドの内容解説

① httpレスポンスを返すコマンドです。(8080はポート番号の指定です)

nc -l 8080

ncコマンドで返す内容をパイプで渡します

echo -e HTTP/1.1 200 OK\n;echo -e Content-Type: application/json; echo; cat response.json

nc コマンド自体は1回レスポンスを返すとプロセス終了してしまうので、何回も実行されるようにします

while :; do <実行したいコマンド>; done

④ Ctrl-cでプロセスを止められるようにします

bash -c "trap exit INT; <実行したいコマンド>"

(trap exit INT; でCtrl-c (SIGINT)を受け取って、プロセスを終了するようにしますが、bash -c で実行するようにして子プロセスで実行するようにして、そのプロセスを終了させるようにします。)

Step3. ブラウザでアクセスしてみる

ncコマンドでportを8080で指定したのでhttp://localhost:8080でアクセスします。

(Chrome拡張のJSON Viewerの表示になっています)

ブラウザからも確認できたので、あとは開発中のシステムからアクセスしてみたりして利用できます🏄‍♂️
(利用が終わってサーバーを止めるときはCtrl-cで止めましょう。)