fetchy

Isomorphic data fetcher which works evenly on client and server

Usage no npm install needed!

<script type="module">
  import fetchy from 'https://cdn.skypack.dev/fetchy';
</script>

README

Fetchy

Isomorphic data fetcher which works evenly on client and server.

Now fetchy supports only browserify and webpack. Bower support for client side is comming soon.

Requirements

  • expressjs
  • body-parser — for parsing post request params
  • axios — for requesting server-side
  • Promise — fetchy uses native promise, so you will probably need to install some Promise polyfill for older browsers

Instalation:

npm i --save fetchy

Usage

Server

var Fetchy = require('fetchy'),
    fetchy = new Fetchy();

// then you should register fetchy middleware
// by default it handles /_fetchy/:name/:action routes
fetchy.registerFetchyMiddleware(app);

// and now you can register data fetcher
// it MUST return promise
fetchy.registerFetcher({
    name: 'test',
    actions: {
        action1: function (params) {
            return new Promise(function (resolve) {
                resolve('action 1, ' + params.param1);
            });
        },

        action2: function (params) {
            return new Promise(function (resolve) {
                resolve('action 2 post, ' + params.param1);
            });
        }
    }
});

// so you can fetch data like this
fetchy.get('test', 'action1', { param1: 'server' }).then(function (data) {
    console.log(data);
});

Client

It's very simillar to server side:

var Fetchy = require('fetchy'),
    fetchy = new Fetchy();

// You don't need to register fetcher, you can just make a request
fetchy.get('test', 'action1', { param1: 'server' }).then(function (data) {
    console.log(data);
});

TODO:

  • Test client side
  • Configuration for route on client side
  • Bower support