@janiscommerce/router-fetcher
v2.1.2
Published
Module to make request to the router
Readme
router-fetcher
Maps services names, namespaces and methods defined in the API's schemas, to endpoints and HTTP methods for APIs's calls from any service.
Instalation
npm install @janiscommerce/router-fetcherConfiguration
Router-Fetcher uses a setting JSON file.
It's located in path/to/root/[MS_PATH]/config/.janiscommercerc.json
Needs the following fields
routerConfig,objectwith URL to get Endpoints and Schemas.
Example
In path/to/root/[MS_PATH]/config/.janiscommercerc.json.
{
"routerConfig": {
"endpoint": "http://valid-router:7999/api/endpoint",
"schema": "http://valid-router:7999/api/services/{serviceName}/schema"
}
}API
new RouterFetcher()Router-Fetcher Constructors
getEndpoint(service, namespace, method, httpMethod)Get the endpoint data doing one request to the router.
service:- type
String - The name of the microservice.
- type
namespace- type
String - The namespace of the microservice.
- type
method- type
String - The method of microservice.
- type
httpMethod- type
String - Verb of the request.
- type
Returns a
PromiseofRouterResponseobjectgetSchema(service)Get the schema data of a service doing one request to the router.
service:- type
String - The name of the microservice.
- type
Returns a
PromiseofRouterResponseobject
Response Object
Response of Router for endpoints
RouterResponseendpoint- type:
String - The endpoint of microservice.
- type:
httpMethod- type:
String - The httpMethod of endpoint.
- type:
For Schemas requests, the response will be an object with the OpenAPI specification
Errors
The errors are informed with a RouterFetcherError.
RouterFetcherError:code:- type:
Number - The status code of the error
- type:
message:- type:
String - The status message of the response.
- type:
name:- type:
String - value:
RouterFetcherError. If the response code is >= 400.- Other, Request Library Error.
- type:
Codes
The codes are the following:
|Code |Description | |-----|-----------------------------| |2 |Schema not found | |3 |Invalid Router Config Path | |4 |Endpoint not found | |5 |Request Library Errors |
Usage
Make a request to "SAC" microservice with the namespace "claim-type" and method "list" and get its endpoints.
const RouterFetcher = require('@janiscommerce/router-fetcher');
const routerFetcher = new RouterFetcher();
try {
const response = await routerFetcher.getEndpoint('sac', 'claim-type', 'list');
/*
Response example
{
"endpoint": "https://sac.janis.in/claim-types",
"httpMethod: "GET"
}
*/
} catch (err) {
/*
Error Response Example:
{
name: 'RouterFetcherError'
message: 'Endpoint not found',
code: 3
}
*/
if (err.name === `RouterFetcherError`) {
// The code of the router response is >= 400.
} else {
// Fatal error of request library https://www.npmjs.com/package/request
}
}Make a request to "SAC" microservice and obtain its schemas.
const RouterFetcher = require('@janiscommerce/router-fetcher');
const routerFetcher = new RouterFetcher();
try {
const response = await routerFetcher.getSchema('sac');
/*
Response example
{
servers: ["core"],
tags: ["sac"],
paths: {
/sac/claim-type/list:
x-janis-namespace: claim-type,
x-janis-method: "list",
get: {
responses: {
'200': description: OK,
'400': description: Invalid parameters,
'401': description: Invalid authentication,
'403': description: Invalid permissions
}
}
}
}
*/
} catch(err) {
/*
Error Response Example:
{
name: 'RouterFetcherError'
message: 'Schema not found',
code: 2
}
*/
if(err.name === `RouterFetcherError`) {
// The code of the router response is >= 400.
} else {
// Fatal error of request library https://www.npmjs.com/package/request
}
}