@kano/api-client
Intercept calls between the server and the client try to minimise them
Last updated 15 days ago by alicemarshall .
ISC · Original npm · Tarball · package.json
$ cnpm install @kano/api-client 
SYNC missed versions from official npm registry.

Kano API client

Provides a js API for browsers to communicate with our set of microservices.

Usage

  • Import the client for the service you require
  • Instanciate with options
  • Call its methods
import { AccountClient } from '@kano/api-client/index.js';

const account = new AccountClient({
    // Where to find the API
    url: 'https://my-api.stuff.me',
    // Default headers will be sent with all requests. Has default for json
    defaultHeaders: {
        'X-Special': 'Value',
    },
});

account.login('me', 'my-password').then(session => console.log(session));

You can share options across clients by giving another client to the contructor:

import { AccountClient, UserClient } from '@kano/api-client/index.js';

const account = new AccountClient({
    // Where to find the API
    url: 'https://my-api.stuff.me',
});

// Same options here
const user = new UserClient(account);

Clients

Implemented clients:

  • AccountClient:
    • login(username, password)
    • register({ username, password, email, marketing })
    • checkUsernameAvailability(username)
  • UserClient:
    • getById(id)
    • getByUsername(username)

More to come

Plugins

You can add plugin to a client. A plugin is a set of methods called during the lifecycle of a request.

Example:

account.addPlugin({
    // Will be called before fetch. The endpoint about to be called will be provided
    // You can change any of its values. Adding a response property will cancel the call
    // to fetch and return the response right away
    beforeFetch(endpoint) {
        // Hi-jack the login endpoint and return static content
        // You can use this to provide offline features
        if (endpoint.name === 'login') {
            endpoint.response = {
                data: {
                    user: {
                        id: 'Hello',
                    },
                },
            };
        }
        // Alwasy return a Promise
        return Promise.resolve(endpoint);
    },
    onError(endpoint, error) {
        if (error === 'fetch failed') {
            /* Silently spoof cached response */
            endpoint.response = ResponseCache.lookup(endponint),
            return Promise.resolve(endpoint);
        } else {
            /* Log and rethrow */
            console.log(error);
            throw error;
        }
    },
    // Will return raw data as received from the API before processing
    // Use this to cache raw responses
    afterDataReceived(endpoint, data) {
        if (name === 'login') {
            console.log(data);
        }
        return Promise.resolve(data);
    },
    // Will be called after the data was received but before it is resolved to the client user
    // Use this to reformat the data, or for logging
    afterDataProcessed(endpoint, data) {
        if (name === 'login') {
            console.log(data);
        }
        return Promise.resolve(data);
    },
});

Publishing

This is an npm package and published publicly on npm. To do this, change the version number in the package.json (eg: 2.0.3 => 2.0.4), run yarn, then push and merge to master then run the following command from the root of the repo: npm publish --access public

It will require you to have an account with npm and to be logged into npm in your terminal.

Current Tags

  • 3.5.4                                ...           latest (15 days ago)

82 Versions

  • 3.5.4                                ...           15 days ago
  • 3.5.3                                ...           15 days ago
  • 3.5.2                                ...           15 days ago
  • 3.5.1                                ...           a month ago
  • 3.5.0                                ...           a month ago
  • 3.4.30                                ...           2 months ago
  • 3.4.29                                ...           3 months ago
  • 3.4.28                                ...           4 months ago
  • 3.4.27                                ...           10 months ago
  • 3.4.26                                ...           10 months ago
  • 3.4.25                                ...           a year ago
  • 3.4.24                                ...           a year ago
  • 3.4.23                                ...           a year ago
  • 3.4.22                                ...           a year ago
  • 3.4.21                                ...           a year ago
  • 3.4.20                                ...           a year ago
  • 3.4.19                                ...           a year ago
  • 3.4.18                                ...           a year ago
  • 3.4.17                                ...           a year ago
  • 3.4.16                                ...           a year ago
  • 3.4.15                                ...           a year ago
  • 3.4.14                                ...           a year ago
  • 3.4.13                                ...           a year ago
  • 3.4.12                                ...           a year ago
  • 3.4.11                                ...           a year ago
  • 3.4.10                                ...           a year ago
  • 3.4.9                                ...           a year ago
  • 3.4.8                                ...           a year ago
  • 3.4.7                                ...           a year ago
  • 3.4.6                                ...           a year ago
  • 3.4.5                                ...           a year ago
  • 3.4.4                                ...           a year ago
  • 3.4.3                                ...           a year ago
  • 3.4.2                                ...           a year ago
  • 3.4.1                                ...           a year ago
  • 3.4.0                                ...           a year ago
  • 3.3.9                                ...           a year ago
  • 3.3.8                                ...           a year ago
  • 3.3.7                                ...           2 years ago
  • 3.3.6                                ...           2 years ago
  • 3.3.5                                ...           2 years ago
  • 3.3.4                                ...           2 years ago
  • 3.3.3                                ...           2 years ago
  • 3.3.2                                ...           2 years ago
  • 3.3.1                                ...           2 years ago
  • 3.3.0                                ...           2 years ago
  • 3.2.0                                ...           2 years ago
  • 3.1.0                                ...           2 years ago
  • 3.0.13                                ...           2 years ago
  • 3.0.12                                ...           2 years ago
  • 3.0.11                                ...           2 years ago
  • 3.0.10                                ...           2 years ago
  • 3.0.9                                ...           2 years ago
  • 3.0.8                                ...           2 years ago
  • 3.0.7                                ...           2 years ago
  • 3.0.6                                ...           2 years ago
  • 3.0.5                                ...           2 years ago
  • 3.0.4                                ...           2 years ago
  • 3.0.3                                ...           2 years ago
  • 3.0.2                                ...           2 years ago
  • 3.0.1                                ...           2 years ago
  • 3.0.0                                ...           2 years ago
  • 2.1.5                                ...           2 years ago
  • 2.1.4                                ...           2 years ago
  • 2.1.3                                ...           2 years ago
  • 2.1.2                                ...           2 years ago
  • 2.1.1                                ...           2 years ago
  • 2.0.8                                ...           2 years ago
  • 2.0.7                                ...           2 years ago
  • 2.0.6                                ...           2 years ago
  • 2.0.5                                ...           2 years ago
  • 2.0.4                                ...           2 years ago
  • 2.0.3                                ...           2 years ago
  • 2.0.2                                ...           2 years ago
  • 2.0.1                                ...           2 years ago
  • 2.0.0                                ...           2 years ago
  • 1.0.5                                ...           2 years ago
  • 1.0.4                                ...           2 years ago
  • 1.0.3                                ...           2 years ago
  • 1.0.2                                ...           2 years ago
  • 1.0.1                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Downloads
Today 0
This Week 0
This Month 34
Last Day 0
Last Week 0
Last Month 25
Dependencies (1)
Dev Dependencies (4)
Dependents (1)

Copyright 2014 - 2017 © taobao.org |