@nestcloud/proxy v0.7.17
NestCloud - Proxy
Description
The proxy module for nestcloud.
Installation
$ npm install --save @nestcloud/proxy
Notification
You should not use body parser middleware when use this module or the post request will hang.
Quick Start
Register Module
import { Module } from '@nestjs/common';
import { NEST_BOOT } from '@nestcloud/common';
import { ProxyModule } from "@nestcloud/proxy";
@Module({
imports: [
ProxyModule.register({dependencies: [NEST_BOOT]}),
]
})
export class AppModule {
}
Configurations
proxy:
routes:
- id: user
uri: lb://nestcloud-user-service
filters:
- name: AddRequestHeaderFilter
paramters:
request-id: 123
- name: AddResponseHeaderFilter
parameters:
request-id: 456
- id: pay
uri: https://example.com/pay
Usage
import { All, Controller, Param, Req, Res } from "@nestjs/common";
import { Request, Response } from 'express';
import { Proxy, InjectProxy } from "@nestcloud/proxy";
@Controller('/proxy/:service')
export class ProxyController {
constructor(
@InjectProxy() private readonly proxy: Proxy,
) {
}
@All()
do(@Req() req: Request, @Res() res: Response, @Param('service') id) {
this.proxy.forward(req, res, id);
}
private updatRoutes() {
const routes = [{id: 'example', uri: 'lb://example-service'}];
this.proxy.updateRoutes(routes);
}
}
Filters
There are AddRequestHeaderFilter
and AddResponseHeaderFilter
filters in internal proxy,
if you want to use your own filter, please implement IFilter
interface,
then call registerFilter(filter: IFilter)
function for registering filter.
class CustomFilter implements IFilter {
before(request: IRequest, response: IResponse): boolean | Promise<boolean> {
return undefined;
}
error(error: ProxyErrorException, request: IRequest, response: IResponse) {
}
getName(): string {
return "CustomFilter";
}
request(proxyReq: ClientRequest, request: IRequest, response: IResponse) {
}
response(proxyRes: IncomingMessage, request: IRequest, response: IResponse) {
}
}
API
class ProxyModule
static register(options: IProxyOptions = {}, proxy?: IExtraOptions): DynamicModule
Register proxy module.
field | type | description |
---|---|---|
options.dependencies | string[] | NEST_BOOT or NEST_CONSUL_CONFIG |
options.routes | IRoute[] | routes of proxy |
proxy | IExtraOptions | please see http-proxy doc for detail |
class Proxy
updateRoutes(routes: IRoute[], sync: boolean = true): void
Update proxy routes.
registerFilter(filter: IFilter)
Register your custom filter.
Stay in touch
- Author - NestCloud
License
NestCloud is MIT licensed.
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago