1.1.0 • Published 5 years ago

hydra-plugin-http v1.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

hydra-plugin-http

Hydra plugin that enables traditional HTTP requests, routing and proxy capabilities to your micro-service infrastructure based on hydra.

v1.x+ uses fast-proxy (17791.10 reqs/sec) instead of http-proxy (408.97 reqs/sec)

Usage

Install Dependencies

npm i hydra-plugin-http --save

This plugin requires hydra version >1.2.10

Register the plugin

const hydra = require('hydra');
const HydraHttpPlugin = require('hydra-plugin-http').HydraHttpPlugin;
hydra.use(new HydraHttpPlugin());

// ... await hydra.init({ hydra: { 'serviceName': 'your-hydra-service-name', 'serviceDescription': 'Just another hydra service...', 'serviceIP': '127.0.0.1', 'servicePort': 0, 'serviceType': 'native', 'serviceVersion': '1.0.0', 'redis': { 'host': '127.0.0.1', 'port': 6379, 'db': 15 }, 'plugins': { 'hydra-plugin-http': { // the plugin can be configured in this point or using the constructor 'lb': {}, 'proxy': {} } } } }); await hydra.registerService();

## Use it ;)

Making HTTP requests to internal/external micro-services using [axios](https://www.npmjs.com/package/axios):
```js
// GET request targeting an internal endpoint in the cluster
let res = await hydra.http.request('/v1/email/config');

// POST request targeting an internal endpoint in the cluster
res = await hydra.http.request.post('/v1/email/send', {
    to: 'account@email.com'
    // ...
});

// GET request targeting an external endpoint
res = await hydra.http.request('https://www.google.de/?q=hydra+microservices');

The request object is literally an instance of axios, with automatic URL resolving for internal micro-services. As simple as it can be ;)
Any URL with the schema /:servicename/:route or /:route, will be automatically translated into a valid URL in the micro-service cluster.

Capturing request events for pre/post processing

hydra.on('http-plugin-request', e => {
    // example of how to set the Authorization header on internal calls
    if ('request' == e.name && 'info' == e.name.level && e.data.targetHydraCluster) {
        e.data.headers['Authorization'] = `Bearer ${getJwtToken()}`;
    }
});

Demos

Demos available into demos folder on the git repository: https://github.com/jkyberneees/hydra-plugin-http

Next topics

1.1.0

5 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.3

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago