0.7.17 • Published 3 years ago

@nestcloud/proxy v0.7.17

Weekly downloads
469
License
MIT
Repository
github
Last release
3 years ago

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.

fieldtypedescription
options.dependenciesstring[]NEST_BOOT or NEST_CONSUL_CONFIG
options.routesIRoute[]routes of proxy
proxyIExtraOptionsplease 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

License

NestCloud is MIT licensed.

0.7.3-node1011

3 years ago

0.7.17

4 years ago

0.6.13

4 years ago

0.6.12

4 years ago

0.7.16

4 years ago

0.7.15

4 years ago

0.7.14

4 years ago

0.7.13

4 years ago

0.7.11

4 years ago

0.7.12

4 years ago

0.7.10

4 years ago

0.7.9-2

4 years ago

0.7.9-1

4 years ago

0.7.9-0

4 years ago

0.7.9

4 years ago

0.7.8

4 years ago

0.7.6

4 years ago

0.7.5

4 years ago

0.7.2

4 years ago

0.7.1

4 years ago

0.7.0

4 years ago

0.6.10-22

4 years ago

0.6.10

4 years ago

0.6.11

4 years ago

0.6.10-20

4 years ago

0.6.10-21

4 years ago

0.6.10-19

4 years ago

0.6.10-18

4 years ago

0.6.10-17

4 years ago

0.6.10-16

4 years ago

0.6.10-15

4 years ago

0.6.10-14

4 years ago

0.6.10-12

4 years ago

0.6.10-13

4 years ago

0.6.10-11

4 years ago

0.6.10-10

4 years ago

0.6.10-6

4 years ago

0.6.10-7

4 years ago

0.6.10-8

4 years ago

0.6.10-9

4 years ago

0.6.10-5

4 years ago

0.6.10-4

4 years ago

0.6.10-3

4 years ago

0.6.10-2

4 years ago

0.6.9

4 years ago

0.6.8

4 years ago

0.6.7

4 years ago

0.6.6

4 years ago

0.6.5

4 years ago

0.6.4

4 years ago

0.6.3

4 years ago

0.6.2

4 years ago

0.6.0

4 years ago

0.6.0-y.4

4 years ago

0.6.0-y.1

4 years ago

0.6.0-y.0

4 years ago

0.6.0-4

4 years ago

0.6.0-3

4 years ago

0.6.0-2

4 years ago

0.6.0-1

4 years ago

0.6.0-0

4 years ago

0.5.3

4 years ago

0.5.2

5 years ago

0.5.1

5 years ago

0.5.0-9

5 years ago

0.5.0-8

5 years ago

0.5.0-7

5 years ago

0.5.0-6

5 years ago

0.5.0-5

5 years ago

0.5.0-4

5 years ago

0.5.0-3

5 years ago

0.5.0-1

5 years ago

0.5.0-0

5 years ago

0.4.5-3

5 years ago

0.4.5-1

5 years ago

0.4.4

5 years ago

0.4.3

5 years ago

0.4.2

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago