Skip to content

Get a full fake REST API with zero coding in less than 30 seconds (seriously)

License

Notifications You must be signed in to change notification settings

imismecom/json-server

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JSON Server Join the chat at https://gitter.im/typicode/json-server

Get a full fake REST API with zero coding in less than 30 seconds (seriously)

Created with <3 for front-end developers who need a quick back-end for prototyping and mocking.

Example

Create a db.json file

{
  "posts": [
    { "id": 1, "title": "json-server", "author": "typicode" }
  ],
  "comments": [
    { "id": 1, "body": "some comment", "postId": 1 }
  ]
}

Start JSON Server

$ json-server db.json

Now if you go to http://localhost:3000/posts/1, you'll get

{ "id": 1, "title": "json-server", "author": "typicode" }

Also, if you make POST, PUT, PATCH or DELETE requests, changes will be automatically saved to db.json using lowdb

Routes

Based on the previous db.json, here are all the available routes.

GET   /posts
GET   /posts/1
GET   /posts/1/comments
GET   /posts?title=json-server&author=typicode
POST  /posts
PUT   /posts/1
PATCH /posts/1
DEL   /posts/1

To slice resources, add _start and _end or _limit. An X-Total-Count header is included in the response.

GET /posts?_start=20&_end=30
GET /posts?_start=20&_limit=10
GET /posts/1/comments?_start=20&_end=30

To sort resources, add _sort and _order (ascending order by default).

GET /posts?_sort=views&_order=DESC
GET /posts/1/comments?_sort=votes&_order=ASC

To make a full-text search on resources, add q.

GET /posts?q=internet

Returns database.

GET /db

Returns default index file or serves ./public directory.

GET /

Install

$ npm install -g json-server

Extras

Static file server

You can use JSON Server to serve your HTML, JS and CSS, simply create a ./public directory.

Access from anywhere

You can access your fake API from anywhere using CORS and JSONP.

Remote schema

You can load remote schemas:

$ json-server http://example.com/file.json
$ json-server http://jsonplaceholder.typicode.com/db

JS file support

You can use JS to programmatically create data:

module.exports = function() {
  data = { users: [] }
  // Create 1000 users
  for (var i = 0; i < 1000; i++) {
    data.users.push({ id: i, name: 'user' + i })
  }
  return data
}
$ json-server index.js

Module

You can use JSON Server as a module:

var jsonServer = require('json-server')

var server = jsonServer.create()         // Express server
server.use(jsonServer.defaults)          // Default middlewares (logger, public, cors)
server.use(jsonServer.router('db.json')) // Express router

server.listen(3000)

For an in-memory database, you can pass an object to jsonServer.route().

Deployment

You can deploy JSON Server. For example, JSONPlaceholder is an online fake API powered by JSON Server and running on Heroku.

Links

Video

Articles

Projects

License

MIT - Typicode

About

Get a full fake REST API with zero coding in less than 30 seconds (seriously)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 90.8%
  • HTML 8.5%
  • CSS 0.7%