Search code examples
json-server

How to set options for json-server as a module?


Suppose we have the following command line to run a json-server (https://github.com/typicode/json-server):

json-server db.json --routes routes.json --port 8008 --delay 1000

If we were to run json-server as a module, how do we set these options? I can see the db.json defined and the port defined. But it is not clear how the rest of the options can be defined.

const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('db.json');
const middleWares = jsonServer.defaults();

server.use(middleWares);

router.render = (req, res) => {
    console.log(req);  
};

server.use(router);
server.listen(8008, () => {
    console.log('JSON Server is running');
});

Solution

  • I found how to set the delay. This requires installing the connect-pause package, which is also used in the json-server code (https://www.npmjs.com/package/connect-pause):

    npm install connect-pause
    

    Then on the server.js file, I added the following a require('connect-pause') and used it in the json server app. Here is my code:

    const fs = require('fs');
    const pause = require('connect-pause');
    const jsonServer = require('json-server');
    const server = jsonServer.create();
    const router = jsonServer.router('db.json');
    const middlewares = jsonServer.defaults();
    
    server.use(middlewares);
    server.use(jsonServer.bodyParser);
    
    //
    // Define custom routes (routes.json)
    //
    var routes = JSON.parse(fs.readFileSync('routes.json'));
    server.use(jsonServer.rewriter(routes));
    
    ...
    
    server.use(pause(1000));
    server.use(router);
    server.listen(8008, () => {
      console.log('JSON Server is running');
    });
    

    To set any other option varies wildly, but I mainly needed to know how to set the delay.