diff --git a/src/handlers/fix-request-body.ts b/src/handlers/fix-request-body.ts index fc9019c7..d1d2976c 100644 --- a/src/handlers/fix-request-body.ts +++ b/src/handlers/fix-request-body.ts @@ -6,6 +6,20 @@ export type BodyParserLikeRequest = http.IncomingMessage & { body?: any }; /** * Fix proxied body if bodyParser is involved. + * + * @example + * ```ts + * createProxyMiddleware({ + * target: 'http://example.com', + * on: { + * proxyReq: fixRequestBody, + * } + * }); + * ``` + * + * Alternative solution without using `fixRequestBody()`: put `http-proxy-middleware` before `bodyParser` in the middleware stack. + * + * @see {@link https://github.com/chimurai/http-proxy-middleware/issues/40 Github issue #40 - POST request body is not proxied} */ export function fixRequestBody( proxyReq: http.ClientRequest, diff --git a/src/handlers/response-interceptor.ts b/src/handlers/response-interceptor.ts index cacadfb0..7721bb38 100644 --- a/src/handlers/response-interceptor.ts +++ b/src/handlers/response-interceptor.ts @@ -19,6 +19,22 @@ type Interceptor = ( * Give developer the opportunity to modify intercepted Buffer and http.ServerResponse * * NOTE: must set options.selfHandleResponse=true (prevent automatic call of res.end()) + * + * @example + * + * ```ts + * createProxyMiddleware({ + * target: 'http://example.com', + * selfHandleResponse: true, // MUST set selfHandleResponse=true + * on: { + * proxyRes: responseInterceptor(async (buffer, proxyRes, req, res) => { + * // modify intercepted buffer and return modified buffer + * const modifiedBuffer = Buffer.from(buffer.toString().replace(/Example/g, 'Demo'), 'utf8'); + * return modifiedBuffer; + * }), + * } + * }); + * ``` */ export function responseInterceptor< TReq extends http.IncomingMessage = http.IncomingMessage, diff --git a/src/types.ts b/src/types.ts index 5dd164bf..031262a1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -23,6 +23,9 @@ export type Filter = | string[] | ((pathname: string, req: TReq) => boolean); +/** + * @see {@link https://github.com/chimurai/http-proxy-middleware/tree/master#defineplugin-helper `definePlugin()`} to define a http-proxy-middleware plugin. + */ export interface Plugin< TReq extends http.IncomingMessage = http.IncomingMessage, TRes extends http.ServerResponse = http.ServerResponse,