Web API のモックサーバーとしても活躍、jsonbox.io

jsonbox.io という HTTP ベースで JSON ストレージを扱えるフリーのサービスがあります。
公式ではスモールプロジェクトや、プロトタイピング、ハッカソンなどで最適とありますが、もうひとつ JAMstack 開発時の Web API のモックとしても活用できるのでご紹介。

JAMstack でフロント開発をしている際は、フロント担当と Web API 担当に分かれて開発をします。もちろん双方を同時に担当してもよいのですが、多くのケースでは担当が分かれることでしょう。

そうなるとフロントエンドから呼び出したい Web API はフロントエンド側でモック実装するなり、モックサーバーを用意するなどの必要があります。モック実装すると本質的でないコードをソース管理することになりますし、モックサーバーを用意するには手間が発生します。

そんな時にjsonbox.ioを使うと、手軽な Web API モックサーバーとして利用することもできます。

jsonbox.io の利用方法

まず jsonbox.io のトップページ、https://jsonbox.ioへブラウザでアクセスします。
するとトップページにhttps://jsonbox.io/box_b68kwaff800864XXXXのような URL が表示されます。これはリロードするたびに毎回変わります。これが JSON ストレージの URL になりますので控えておきます。

このbox_b68kwaff800864XXXXの文字列はBOX_IDと呼ばれ、JSON ストレージの ID です。jsonbox.io のトップページで生成されたものを使うほか、20文字以上の英数字とアンダーバー(_)を使って自分で生成することもできます。事前に設定する必要はなくレコードを作るときに指定したものが、そのまま使われます。

ここからはjsonbox/README.mdをベースに紹介します。

レコードの作成

HTTP POST で作成したいレコードの JSON をリクエストします。

1
2
3
curl -X POST 'https://jsonbox.io/demobox_6d9e326c183fde7b' \
-H 'content-type: application/json' \
-d '{"name": "Jon Snow", "age": 25}'

以下のようなレスポンスが返り_id_createdOnが自動生成されていることがわかります。

1
{"_id":"5d776a25fd6d3d6cb1d45c51","name":"Jon Snow","age":25,"_createdOn":"2019-09-10T09:17:25.607Z"}

複数のレコード同時に作成するには-dで渡すデータを配列にします。

1
2
3
curl -X POST 'https://jsonbox.io/demobox_6d9e326c183fde7b' \
-H 'content-type: application/json' \
-d '[{"name": "Daenerys Targaryen", "age": 25}, {"name": "Arya Stark", "age": 16}]'

また URL をjsonbox.io/${BOX_ID}/${COLLECTION}のようにしてグループレコードも作れます。

1
2
3
curl -X POST 'https://jsonbox.io/demobox_6d9e326c183fde7b/users' \
-H 'content-type: application/json' \
-d '[{"name": "Daenerys Targaryen", "age": 25}, {"name": "Arya Stark", "age": 16}]'

レコードの取得

HTTP GET リクエストでレコードが取得できます。pathname によって返る範囲が変わります。

BOX_IDまでの場合、グループレコードを含めた、全レコードが返ります。

1
curl -X GET 'https://jsonbox.io/demobox_6d9e326c183fde7b'

BOX_IDに加えCOLLECTIONも指定することで、そのCOLLECTIONに含まれるグループレコードが返ります。

1
curl -X GET 'https://jsonbox.io/demobox_6d9e326c183fde7b/users'

BOX_IDに加えRECORD_ID、レコードを作成したとき or リスト取得した際に返ってきた_idの値を指定すると、その ID の1レコードが返ります。

1
curl -X GET 'https://jsonbox.io/demobox_6d9e326c183fde7b/5d776a25fd6d3d6cb1d45c51'

またソートやリミット、クエリーなど柔軟な取得方法も備えています。今回は JSON モックサーバーとしての用途を想定していますので簡単な CRUD 処理ができれば十分ですが、アプリなどで実際に使う場合には必要でしょう。詳しくはRead - jsonbox/README.mdをご参照ください。

レコードの更新

HTTP PUT リクエストをRECORD_IDまで指定した URL でレコードを更新します。
PATCH と、バルク更新はサポートされていません。

1
2
3
curl -X PUT 'https://jsonbox.io/demobox_6d9e326c183fde7b/5d776b75fd6d3d6cb1d45c53' \
-H 'content-type: application/json' \
-d '{"name": "Arya Stark", "age": 18}'

レコードの削除

HTTP DELETE リクエストをRECORD_IDまで指定した URL でレコードを更新します。
またクエリーを使用して複数のレコード削除も可能です。

1
curl -X DELETE 'https://jsonbox.io/demobox_6d9e326c183fde7b/5d776b75fd6d3d6cb1d45c53'

制約

フリーで利用できますが、不正利用や乱用を防ぐ(= avoid abuse)ために以下の制限を課しているとのことです。

  • リクエストのボディは 10KB まで
  • 一度に扱えるレコードは 1,000件まで
  • レコード数は 5,000件までを目安に

3つ目のレコード数ほか、高負荷をかけないなどマナーを守りたいですね。これだけの素晴らしいサービスを無償で提供してくださっており、また “小規模向けなのでフリーとしています” とのことです。

原文は以下。

There is no limit on the number of records you store in a box, but please don’t abuse the API by storing large datasets of more than 5000 records. This is meant for small projects and that’s why it is offered FREE of cost. -Limitations


単純な CRUD 処理は REST の Web API として簡単に操作できます。
グループレコードの機能があるので、単純な JSON モックサーバーとしては十分でしょう。

またクエリーやskiplimitを使ったページネーション等の高度な機能もあるので、公式で謳っている通りスモールプロジェクトや、プロトタイピング、ハッカソンでも十分な能力を発揮してくれそうです。