SYSTEM-5-5

クライテリア

APIに関わる要件は、SDD(スキーマ駆動開発)で開発され、直ちにモックアップサーバーが提供できるか。

タイプ

API駆動開発

観点

プラクティス

用語解説

モックアップサーバー

開発(テスト)用のダミーデータを返すAPIサーバーです。

参考資料

オープンソースのAPI連携 / JSON Serverとは
JSON Server(ジェイソン サーバ)とは、JSONファイルを元にしてWebAPIサーバモックアップを作成できる簡易サーバです。開発中のWebAPIテストなどに活用できます。 基本説明 JSONファイルを指定して、JSON Serverを起動すれば、JSONをRESTfulに提供するHTTPサーバになります。APIリクエストを受け取り、応答します。 通常、開発(テスト)用APIモックアップを作成するためには多くの手間がかかります。JSON Serverを利用すれば、コーディングすることなく、時間をかけることなく、構成ファイルを記述するだけで、簡単に簡易CRUD APIモックアップを立ち上げられます。 ユースケース ・バックエンドが用意されていない状態でアプリケーションのフロントエンドをプロトタイピングする場合 ・API設計時 など 必要なツール JSON Serverを使用するためには以下のツールが必要です。 ・ Node.js:JSON ServerはNode.js上で動作します ・NPM(Node Packaged Modules):Node.js.のパッケージマネージャ ・Curl:さまざまなプロトコルでデータ転送するコマンドラインツール(HTTPリクエストの送受信に利用します) インストール方法 インストールは以下のコマンドのみで完了します。 「npm install -g json-server」 Docker版も用意されています。 →Docker Hub『clue/json-server』 使い方 JSON Serverを使用する場合の主な手順です。 1.JSONデータを用意する 2.JSON Serverを起動  ※「--read-only」オプションで読み取り専用サーバとして起動します。 3.「http://localhost:3000/○○○」にアクセス(○○○はリソース名) これでCRUD操作を実行できます。このサーバのデータに対して、データの参照/変更などを行えます。 対応メソッド 以下のメソッドに対応しています。 ・GET(データ取得) ・POST(データ追加) ・PUT(データ更新) ・PATCH(データ部分更新) ・DELETE(データ削除) ※「JSONP」「CORS」などにも対応しているため、クロスドメインでも利用できます。 検索機能 「curl -X GET "http://localhost:3000/○○○?q=□□□"」 ○○○リソース内にある全アイテムから、フィールドのどこかに□□□が含まれているアイテムを検索します。 フィルター機能 「curl -X GET "http://localhost:3000/○○○?△△△=7"」 ○○○リソース内にある全アイテムから、△△△プロパティが7であるアイテムを検索します。 ページ番号機能(ページネーション) JSON Serverは、1ページあたり10項目のページネーションサポートを提供します。検索サイトで1ページあたり10項目表示されるイメージです。 このページネーションを利用した検索も行えます。 「curl -X GET "http://localhost:3000/○○○?_page=2"」 ○○○リソースから、2ページ目(11~20件目のアイテム)を取得します。 ソート機能 「curl -X GET "http://localhost:3000/○○○?_sort=△△△&_order=DESC"」 ○○○リソースに対して△△△プロパティで降順ソートを行います。 演算子 アンパサンド(&)を挿入すれば複数の条件を組み合わせることができます。 また、以上「_gt」、以下「_lt」の条件設定も行えます。 JSON Serverのライセンスは「MIT License」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。 ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
JSON ServerでRestAPIのモックを作成した話 - 弥生開発者ブログ
こんにちは。弥生の森です。 最近の悩みは、家のGoogleHomeが"話しかけた備忘録をSlackに送るだけのマシン"になってしまっていることです。 早く彼女に新しい仕事を振らなければなりません。 さて、今日は、JSON Serverを使用してRestAPIのモックを作成した話を書きたいと思います。 現在業務で、"社内のAPIをまとめて呼ぶAPI"の開発を行っています。 しかし、新規開発なので利用するAPIのほとんどは、開発時に完成していません。 新規でフロントエンド等の開発を行う際のあるあるだと思います。 でも、APIできあがっていないので開発できませんという訳にもいきません。 では、うちのチームはどうしていたのか。 今までは、開発者が自分ひとりということもあり、AWSのEC2上にApacheでモックサーバーをたてていました。 jsonファイルを置き、任意のURIに紐付けて、固定でjsonを返すようにしていたのです。 しかし、開発が盛り上がるにつれてチームに一人、二人と人がやってきて、モックサーバーは混雑するようになりました。 モックがネックでテストはウェイト、yeah。 ・・・どうしよう? EC2をコピーして各人使う?(お金かかるし・・・) ローカルにApacheたてる?(各自やるの?手順書つくるの? めんどくさい・・・) 何か、楽で簡単なやり方はないかと探しておりました。 見つけました。 JSON Server。   「30秒以内にRestAPIのモックサーバーを作るで、コーディング不要で(いやほんまに)」 ※意訳 これや。こういうの探しとったんや└|∵|┐ アイコンが可愛いですね。 JSON Serverは、Node.jsベースのライブラリです。 本当に簡単に、モックサーバーを作ることができます。そう、30秒で。(ほんまに。) それではその手順をみていきましょう。 ①Node.jsを入れる JSON ServerはNode.jsベースのライブラリですので、まずNode.jsを入れなければいけません。※Node.jsが入っている場合は飛ばして次の手順に進んでください。 ここでWindows向けのNode.jsを入手します。他の環境のインストール方法については記載を省略します。 英語ですが、特に悩むことなく「Next」連打でインストール完了するかと思います。 次のコマンドを試して、バージョンが表示されればインストール成功です。 > node --version > npm --version ②Json-serverをインストール 下記のコマンドでJson-serverをインストールします。 > npm install -g json-server エラーなく終了すれば成功です。 ③リソースを作成する インストールしたら、次はリソースを作成しましょう。 呼んだときに返すJson形式のレスポンスです。 サンプルとしてこのようなものを作成します。 db.json route.json { "/api/test/mock/v1/get_users": "/get_users" ,"/api/test/mock/v1/get_company": "/get_company" } json-serverの制約としてリソースパスにスラッシュを含めることが出来ないのですが、スラッシュを含むAPIのモックを作成したかったため、route.jsonでパスを書き換えました。 ④起動する リソースができたら起動します。 > json-server db.json --routes route.json -p 3000 起動も簡単。ポート番号も変えることができます。 当たり前ですが、ポート番号を変えれば多重起動が可能です。 ⑤GETを投げてみる いよいよ確認! Postmanで http://localhost:3000/api/test/mock/v1/get_users にGETを投げてみます。 やったー!無事、かえってきました。 ほんとこれだけ。 ラクダ に乗って飛び回っている私にだって、30秒+αで出来ました。 POSTを投げてみる 流れで同じURLにPOSTも投げてみます。 んん?期待した値が返らない。 どうやら、POSTするとリソースファイルが書き換えられるようです。 ツールとしては便利なんだけど、POST型のAPIもモック化したい私にとっては不都合。 POSTでも書き換えられないよう、ほんの少しコーディングします。 コーディングして再起動 下記のようなserver.jsを、route.jsonの代わりに配置します。 POSTリクエストをGETリクエストに偽装します。 ...