mock-restful-server

A lightweight library to launch a mock restful server using models.

Usage no npm install needed!

<script type="module">
  import mockRestfulServer from 'https://cdn.skypack.dev/mock-restful-server';
</script>

README

MockRestfulServer

mock-restful-server

A lightweight restful api mock server using models.

Features

  • Models management
  • CRUD operations

API

Server infos

  • Model structure infos GET http://{address}:{port}

CRUD

  • Get collection records GET http://{address}:{port}/{collection}
  • Get collection record GET http://{address}:{port}/{id}
  • Create collection record POST http://{address}:{port}/
  • Update collection record PUT http://{address}:{port}/{id}
  • Delete collection record DELETE http://{address}:{port}/{collection}/{id}

Authentication

  • Signup POST http://{address}:{port}/signup
  • Login POST http://{address}:{port}/login

*Note: /login and /signup routes are reserved for authentication related mocking.

Maintenance

  • Generate a whole random database according to the models POST http://{address}:{port}/_randomize
  • Dump the current database POST http://{address}:{port}/_dump

Usage

Lib mode

$ npm install mock-restful-server

Methods signatures

function start(models, data, mode, port = 0)

*Note: without specifying the port argument a random port will be allocated by the system. The server listening address will be logged in the console at start.

Example

const mockRestfulServer = require('mock-restful-server');
const models = {
  users: {
    email: {
      type: "string",
      required: true
    },
    name: {
      type: "string",
      required: true
    },
    address: {
      type: "string"
    }
  },
  cars: {
    name: {
      type: "string",
      required: true
    },
    brand: {
      type: "string",
      required: true
    },
    year: {
      type: "number"
    }
  }
}

*Note: supported model attributes are "type" and "required". type can be either "number", "string", "boolean", "array" or "map".

const data = {
  users: [{
    email: 'john.doe@gmail.com',
    name: 'John Doe',
    address: 'Central Park Lake, NY'
  }],
  cars: [{
    name: 'Mustang'
    brand: 'Ford',
    year: '1970'
  }]
}
const mode = 'STRICT'

*Note: supported modes are STRICT and OPEN. OPEN is the default mode. In STRICT mode, two case will lead the server to throw an exception at saving time : trying to save a record with no model previously defined and trying to save a record having at least one field which doesn't exist in its model structure.

const { port, stop } = mockRestfulServer.start(models, data, mode, 8080)
// stop the server 
stop()

CLI mode

$ npm install -g mock-restful-server
$ mock-restful-server --models=models.json --data=data.json --mode=STRICT --port=8080

License

MIT