[Front-End General] JSON Server で立てた REST API をテストするツールと faker でのダミーデータ流し込み

curl よりも便利に使えるツール( Chrome Extensions, JetBrains Products)がある。
さらに faker でダミーデータを流し込む。

REST API TEST Tool

Chrome 拡張

DHC を使ったことがあるが、他のツールも紹介されている。
Postman が多機能なよう。

Postman – REST Client – Chrome ウェブストア

DHC – Restlet Client – Chrome ウェブストア

JetBrains

JetBrains 製品には、Test RESTful Web Service というツールがあった。
これがいいかな感。

こちらで使い方を知った。

faker でダミーデータを流し込む

さらに json-server に faker でダミーデータを流し込む手順も説明されているので試してみる。

インストール

% npm install --save-dev faker lodash

generate.js の作成と実行

faker のメソッドを使って、データを生成するスクリプトを書く。

generate.js
module.exports = function() {
  var faker = require('faker');
  var _ = require('lodash');
  faker.locale = 'ja';
  return {
    posts: _.times(10, function(n) {
      return {
        id: n,
        title: faker.lorem.sentence(),
        author: faker.name.findName(),
      }
    })
  }
}

generate.js を指定してサーバを起動。
generate.js が db.json の代わりになっていて、スクリプト内で作った posts が使えるようになっている。
なので db.json の内容が書き換わるわけではない。

 json-server --watch generate.js
  \{^_^}/ hi!
  Loading generate.js
  Done
  Resources
  http://localhost:3000/posts
  Home
  http://localhost:3000
  Type s + enter at any time to create a snapshot of the database
  Watching...

データは下記のようになっているが、"結菜 清水 III""Mr. 美咲 鈴木" 等があるので、もう少し工夫が必要そう。

{
  "posts": [
    {
      "id": 0,
      "title": "Eos id minus maxime rerum.",
      "author": "樹 中村"
    },
    {
      "id": 1,
      "title": "Placeat hic voluptatem excepturi quam cumque non.",
      "author": "結菜 清水 III"
    },
    {
      "id": 2,
      "title": "Repellendus eos labore sit adipisci porro debitis cupiditate at nisi.",
      "author": "大和 山口"
    },
    {
      "id": 3,
      "title": "Error at dolores libero aut quis fuga qui ut voluptatem.",
      "author": "杏 山口 IV"
    },
    {
      "id": 4,
      "title": "Vitae ea error facilis non aut rem.",
      "author": "大和 山田"
    },
    {
      "id": 5,
      "title": "Quisquam est ut.",
      "author": "Mr. 美咲 鈴木"
    },

JSON 形式でスナップショットをとる

起動時の表示の通り、s + enter でスナップショットをとれる。
次回以降にこのファイルを指定するなり、db.json にマージして利用する事で目的を達成できる。

  Type s + enter at any time to create a snapshot of the database
  Watching...
GET /db 304 9.996 ms - -
GET /posts 200 10.010 ms - 77
s
  Saved snapshot to db-1481811331533.json

補足:ツールの使い勝手

posts?q=eosposts?q=山 を試したが、RubyMine では動かなかった。
DHC で試した所、意図したとおりに値が返ってきた。
どうやら JetBrains では足りない模様。

補遺

追記:2016/12/21