Hermes
End point aggregation server. useful for providing a single url for all of your micro service endpoints.
Usage
npm install --save hermes-server
'use strict'; const Hermes = ;const routeSupplier = filePath: './node_modules/hermes-server/routes.example.json';const hermes = routeSupplier 3000; hermes; hermes;
Route Suppliers
In order to know where to proxy traffic, Hermes needs to be provided with a set of routes. This is achieved by instantiating a RouteSupplier.
Default Route Suppliers
Hermes comes with two route suppliers, Hermes.SimpleRouteSupplier
and
Hermes.FileSystemRouteSupplier
SimpleRouteSupplier
Provides routes based on an object passed on instantiation
const routeSupplier = routeData: 'name': 'Test route' 'methods': 'GET' 'pattern': '/test' 'target': 'protocol': 'http' 'host': 'example.com' 'pathname': '/' ;routeSupplier;
FileSystemRouteSupplier
Reads routes from a JSON file, the path of which is passed to the constructor
const routeSupplier = filePath: './node_modules/hermes-server/routes.example.json';routeSupplier;
Custom Route Suppliers
To allow custom generation/retrieval of routes, it is possible to create your own RouteSupplier
const Q = ;const Route = Route; RouteSupplier { superoptions; } { return Q; }
Route Format
Routes should be defined as below
// A unique identifier for the route "id": "Test route" // Which methods should be proxied "methods": "GET" "POST" "PUT" "DELETE" // The hermes path that should be requested in order to have it proxied to // the target. Supports RegEx's // IE // http://your-hermes-instance.com/test => http://example.com/ // http://your-hermes-instance.com/test/thing => http://example.com/thing "pattern": "/test(.*)" // The target that the request should be proxied to. Accepts all values that // url.format accepts https://nodejs.org/api/url.html#url_url_format_urlobj "target": "protocol": "http" "host": "example.com" "pathname": "/$1"