/miniapi

Minimalistic api server

Primary LanguageJavaScript

miniapi

miniapi

Build Status CircleCI Coverage Status npm version

Minimalistic API server

By default it opens a HTTP server on port 3000 and serves some json.

Instalation

Using npm

npm install miniapi

Setting up

Just do:

const miniapi = require('miniapi');
miniapi.start();

This will create a very simple web server serving this json document:

[
  { id: 1, name: 'Alice'},
  {id: 2, name: 'Bob'}
]

Options

You can change some default settings with clauses:

const miniapi = require('miniapi');
miniapi
  .withPort(3200)
  .start();

You can also change the data:

miniapi
  .withPort(3200)
  .withData([{id: 3, name: 'Thor'},{ id: 666, name: 'Loki'}])
  .start();

By default, the name of the API is user. You can change it using withName clause:

miniapi
  .withName('myapi')
  .start();

Then, all requests should go to /myapi

If you change the id with setId, you must provide coherent data:

miniapi
  .withPort(3200)
  .withId('_id')
  .withData([{_id: 3, name: 'Thor'},{ _id: 666, name: 'Loki'}])
  .start();

You can also get initial data from a JSON file using withDataFrom clause:

miniapi
  .withPort(3200)
  .withId('_id')
  .withDataFrom('./sample.json')
  .start();

And you can also apply withPersist to save API data to the same file:

miniapi
  .withPort(3200)
  .withId('_id')
  .withDataFrom('./sample.json')
  .withPersist()
  .start();

Obviously, withPersist clause needs to set withDataFrom clause.

The API

GET /

Any of these will return all data with 200 code.

  • GET /
  • GET /user or GET /{name}
  • GET /user/ or GET /{name}

GET /{name}/{id}

This will return just one record with 200 code.

  • GET /user/1 or GET /{name}/{id}

Or it will return {} with 404 if there is no match.

POST /{name}

Expects a JSON body, for example:

{ name: 'Miniapi rulez'}

This will return the newly created record with 200 code.

  • POST /user or POST /{name}

Or it will return {} with 404 if url is incorrect.

PUT /{name}/{id}

Expects a JSON body, for example:

  { name: 'Miniapi rulez'}

This will return the updated record with 200 code:

  { id: 1, name: 'Miniapi rulez'}
  • PUT /user/1 or PUT /{name}/{id}

Or it will return {} with 404 if url is incorrect.

PATCH /{name}/{id}

For the moment, it's just like PUT. Expects a JSON body, for example:

    { name: 'Miniapi rulez'}

This will return the updated record with 200 code:

    { id: 1, name: 'Miniapi rulez'}
  • PATCH /user/1 or PATCH /{name}/{id}

Or it will return {} with 404 if url is incorrect.

DELETE /{name}/{id}

This will return the deleted record with 200 code.

  • DELETE /user/1 or DELETE /{name}/{id}

Or it will return {} with 404 if there is no match.

Greets

⚔️