1.0.7 • Published 5 years ago

fake-json-api v1.0.7

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

Fake JSON API

A small package that intercepts AJAX requests and responds with data stored locally in IndexedDB. It attempts to fake an actual JSON API.

Setup

Install the package:

npm i fake-json-api

or

yarn add fake-json-api

Import it in your code:

import api from 'fake-json-api'

or

const api = require('fake-json-api')

Configure the database:

api.configure({
  posts: {
    schema: '++id,title,content'
  }
})

Uses Dexie.js stores syntax to define the schema

Add some data:

api.loaddata({
  posts: [
    { id: 1, title: 'Test post 1', content: 'blah blah blah' },
    { id: 2, title: 'Test post 2', content: 'blah blah blah' }
  ]
})

Start it intercepting requests:

api.listen()

Make a request:

fetch(/posts)
  .then(res => res.json())
  .then(data => console.log(res.data))

Available endpoints would be:

  • GET /posts
  • POST /posts
  • GET /posts/:id
  • PUT /posts/:id
  • DELETE /posts/:id

Relational data

Works with dexie-relationships for relational data. So for example if you want to add users to posts:

api.configure({
  posts: {
    schema: '++id,title,content,user_id -> users.id',
    populate: { user: 'user_id' }
  },
  user: {
    schema: '++id,username',
    populate: { posts: 'posts' }
  }
})

api.loaddata({
  posts: [
    { id: 1, title: 'Test post 1', content: 'blah blah blah', user_id: 1 },
    { id: 2, title: 'Test post 2', content: 'blah blah blah', user_id: 2 }
  ],
  users: [
    { id: 1, username: 'mickyginger' },
    { id: 2, username: 'mattstuddert' }
  ]
})

Users would now be nested in posts, and each user object would have an array of nested posts.

Available endpoints would be:

  • GET /posts
  • POST /posts
  • GET /posts/:id
  • PUT /posts/:id
  • DELETE /posts/:id
  • GET /users
  • POST /users
  • GET /users/:id
  • PUT /users/:id
  • DELETE /users/:id
1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago