ganomede-base-client
Simple wrapper around restify.JsonClient
to
start with when writing own API Clients. Changes:
- single
request()
-like method (#apiCall({method, path, body, headers, qs}, callback)
), meaning:
- base urls;
- per request headers;
- easier query string;
- supports path prefixes (useful if you want to have something like
/api/v1
in front of all requests); - if
body
or qs
contain req_id
param, sets x-request-id
header to value of it.
Basic Usage
Import BaseClient
and define higher-level APIs.
const BaseClient = require('ganomede-base-client');
class MyApi extends BaseClient {
constructor ({hostname = 'my-api.example.org', version = 1, apiKey}) {
super(
`https://${hostname}/version-${version}`,
{headers: {'X-API-Key': apiKey}}
);
}
ping (callback) {
const call = this.apiCall(
{method: 'get', path: '/ping', qs: {'check-auth': 1}},
callback
);
}
}
Custom defaults
Some defaults are changed from those of restify:
- up to 3 attempts on establishing TCP connections
with exponential timeout between 1 and 5 seconds;
- default headers:
accept
of application/json
;accept-encoding
of gzip,deflate
.