JSPM

  • Created
  • Published
  • Downloads 292756
  • Score
    100M100P100Q180061F
  • License MIT

Serves JSON files through REST routes.

Package Exports

  • json-server
  • json-server/package.json

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (json-server) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

JSON Server

Give it a JSON or JS seed file and it will serve it through REST routes.

Created with ❤️ for front-end developers who need a flexible back-end for quick prototyping and mocking.

Build Status NPM version

Examples

Command line interface

// db.json
{ 
  "posts": [
    { "id": 1, "body": "foo" }
  ]
}
$ json-server --file db.json
$ curl -i http://localhost:3000/posts/1

Node module

var server = require('json-server');

server.low.db = { 
  posts: [
    { id: 1, body: 'foo' }
  ]
}

server.get('/another/route', function(req, res, next) {
  // ...
})

server.listen(3000);

You can find a running demo here: http://jsonplaceholder.typicode.com.

Why?

  • Lets you use plain JSON or simple JS file
  • Supports GET but also POST, PUT, DELETE and even PATCH requests
  • Can be used from anywhere through cross domain requests (JSONP or CORS)
  • Can load remote JSON files
  • Can be deployed on Nodejitsu, Heroku, ...

Installation

$ npm install -g json-server

Usage

Command line interface

  Usage: json-server <source> [options]

  Options:

    --version      output version
    --port <port>  set port

  Exemples:

    json-server db.json
    json-server seed.js
    json-server http://example.com/db.json
    

Input

Here's 2 examples showing how to format JSON or JS seed file:

  • db.json
{
  "posts": [
    { "id": 1, "body": "foo" },
    { "id": 2, "body": "bar" }
  ],
  "comments": [
    { "id": 1, "body": "baz", "postId": 1 }
    { "id": 2, "body": "qux", "postId": 2 }
  ]
}
  • seed.js
exports.run = function() {
  var data = {};

  data.posts = [];
  data.posts.push({ id: 1, body: 'foo' });
  //...

  return data;
}

JSON Server expects JS files to export a run method that returns an object.

Seed files are useful if you need to programmaticaly create a lot of data.

Node module

run(db, [options])

var server = require('json-server'),
    db = require('./seed').run();

var options = { port: 4000, readOnly: true };

server.run(db, options);

By default, port is set to 3000 and readOnly to false.

Routes

GET   /:resource
GET   /:resource?filter=&filter=&
GET   /:parent/:parentId/:resource
GET   /:resource/:id
POST  /:resource
PUT   /:resource/:id
PATCH /:resource/:id
DEL   /:resource/:id

To slice resources, add _start and _end to query parameters.

For routes usage information, have a look at JSONPlaceholder code examples.

GET /db

Returns database state.

GET /

Returns default index file or content of ./public/index.html (useful if you need to set a custom home page).

Articles