Я работаю над приложением Node.js / express в машинописном тексте, который включает в себя прокси-маршрут с некоторой настраиваемой бизнес-логикой для определения URL прокси:
import proxy from "http-proxy-middleware";
const controller = diContainer.get<IController>(TYPES.Controller);
const app = express();
app.use("/customProxy", controller.handleProxy());
@injectable()
export class Controller implements IController {
public handleProxy(): RequestHandler {
return proxy(
"**", // proxy all incoming routes
{
router: (req: Request) => {
// custom logic to translate route
return customRouteBasedOnIncomingRequest;
},
onProxyRes: (proxyRes: http.IncomingMessage, req: http.IncomingMessage, res: http.ServerResponse) => {
// custom logic to set outgoing response
res.setHeader("custom", "header")
},
}
});
}
}
Я могу использовать mock-express-request для создания объекта Request / Response, но я не могу понять, как подключить его к proxy
.
Есть ли способ ввести макет, который перехватываетhttp-клиент отправляет запрос прокси? В идеале, как-нибудь я мог бы подключить эту функцию к Controller
:
public mockedHttpServer(req: Request):Response
{
const res = new MockExrpessResponse();
if (req.url == "http://expected.url"){
res.write("success");
res.statuscode = 200;
}
else{
res.statuscode = 404;
}
return res;
}
Попробовал подключиться к proxy.onProxyReq
и вызвать proxyReq.abort()
и чем пытаться написатьнепосредственно к Response
, но это не мешает отправке запроса в реальном времени.
Есть ли другой способ подключиться к стеку http и выполнить макет сети io?