Git Product home page Git Product logo

fake-json-api-server's Introduction

Fake JSON-api server

Build Status Coverage Status NPM Status

Simple json-api server running in browser or node environment. Intercepts client XHR requests for defined routes when running in browser. Useful for test runners and setting up fake backend api server for client applications.

Visit documentation site.

Fake json api server processes data per json:api specification. It can be easily configured to handle (paginated) get, post, put and delete requests for user defined resources. Define dataset, filters and validation rules for each entity. Loaded dataset can be persisted to localStorage in browser.

Examples and api

Create fake server instance with configuration object.

new FakeJsonApiServer({
    baseApiUrl: '/api',
    resources: {
        tag: {
            data: [{
                type: 'tag',
                id: '1',
                attributes: {title: 'Tag 1'}},
            {
                type: 'tag',
                id: '2',
                attributes: {title: 'Tag 2'}
            }]
        }
    }
});

$.get('/api/tag', function(tagList) {
    // process tags json:api formatted data
});

$.get('/api/tag/1', function(tagData) {
    // process api data of tag with id 1
});

Persisting data to localStorage, setting up filters and validation rules for post and put request can be defined like so:

new FakeJsonApiServer({
    baseApiUrl: '/api',
    storageKey: 'fakeServerStorage',
    resources: {
        article: {
            filters: {
                title: function(title, query) {
                    return title.toLowerCase().indexOf(query.toLowerCase()) >= 0;
                }
            },
            validationRules: {
                title: {
                    rule: function(title) {
                        return title.length > 0;
                    },
                    message: 'Please enter title.'
                }
            },
            data: function(random) {

                return _.chain(_.range(1, 9)).map(function(index) {
                    return {
                        type: 'article',
                        id: String(index),
                        attributes: {
                            title: 'Article title ' + index,
                            leadTitle: 'Article lead title ' + index,
                            published: random.boolean()
                        },
                        relationships: {
                            author: {data: {id: random.id(1, 5), type: 'user'}},
                            tags: {
                                data: [
                                    {id: random.id(1, 5), type: 'tag'},
                                    {id: random.id(6, 10), type: 'tag'},
                                    {id: random.id(1, 10), type: 'tag'}
                                ]
                            }
                        }
                    };
                }).value();

            }
        }
    }
});

Node server setup

Following code will run fake json api server on localhost port 3000.

// server.js
var FakeServer = require 'fake-json-api-server/src/nodeServer';

new FakeServer({
    port: 3000,
    resources: {
        tag: {
            data: [{
                type: 'tag',
                id: '1',
                attributes: {title: 'Tag 1'}},
            {
                type: 'tag',
                id: '2',
                attributes: {title: 'Tag 2'}
            }]
        }
    }
});
node server.js

Api is now setuped to serve tag resources in json-api format on http://localhost:3000/tag

Installation

FakeJsonApiServer is packaged as UMD library so you can use it in CommonJS and AMD environment or with browser globals.

npm install fake-json-api-server --save
// with bundlers
var FakeJsonApiServer = require('fake-json-api-server');

// with browser globals
var FakeJsonApiServer = window.FakeJsonApiServer;

fake-json-api-server's People

Contributors

dbrekalo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fake-json-api-server's Issues

Trailing slash needed in baseApiUrl

Minor one - just noticed that baseApiUrl requires a trailing slash, since the code just does:

var resourceUrl = options.baseApiUrl + resourceSlug;

(which works when it's e.g. / but not for /api as documented.

Happy to put in a PR to fix this, but wasn't sure if you'd prefer the simple option of updating the documentation, or the fancier 'check for trailing slash, and add one if not present' option in the code.

Add 'links' support

Hi,

Have found this library really useful! I'm currently looking to test the top-level links element of jsonapi in code, and there doesn't seem to be a way to add links to the fake server data - in particular self, containing the url of the fetched object.

Would it be possible to add this? Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.