@janiscommerce/router-fetcher v2.1.2
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: - typeString- The name of the microservice. -namespace- typeString- The namespace of the microservice. -method- typeString- The method of microservice. -httpMethod- typeString- Verb of the request.Returns a
PromiseofRouterResponseobject
getSchema(service)Get the schema data of a service doing one request to the router.
service: - typeString- The name of the microservice.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
}
}