Angular2/Angular seed http-proxy-middleware прокси API заявки

Използвам проекта Angular Seed и се опитвам да настроя прокси за api искания за бекенд услуга, която работи на различен порт.

Моят код досега:

/* Add proxy middleware */
this.PROXY_MIDDLEWARE = [
  require('http-proxy-middleware')({
    ws: false,
    target: 'http://localhost:5555',
    router: {
      // when request.headers.host == 'dev.localhost:3000',
      // override target 'http://www.example.org' to 'http://localhost:8000'
      //'http://localhost:5555/basepath/api' : 'http://localhost:7000/api'
    }
  })
];

По принцип това, което трябва да направя, е да маршрутизирам всеки api, съответстващ на http://localhost:5555/basepath/api към http://localhost:7000/api, въпреки че изглежда не мога да накарам това да работи с помощта на http-proxy-middleware . Първоначално работех с помощта на прокси-мидълуер, но превключих, тъй като трябва да променя заглавките на заявките и изглежда, че може да се направи само с http-прокси-мидълуер.


person Steve Fitzsimons    schedule 28.03.2017    source източник


Отговори (1)


Прекарах малко време в опити да свърша тази работа и накрая добавих към project.config.ts в конструктора.

   /* Add proxy middleware */
    this.PROXY_MIDDLEWARE = [
      require('http-proxy-middleware')(
        '/basepath/api', {
        ws: false,
        onProxyReq: this.onProxyReq,
        target: 'http://localhost:7000',
        pathRewrite: {
          '^/basepath/api' : '/api'
        }
      })
    ];

И това е функцията, която включих под конструктора, за да добавя заглавка към всички заявки, които са прокси

onProxyReq(proxyReq: any , req: any, res: any) {
  // add custom headers to request
  proxyReq.setHeader('header_name', 'value');
}
person Steve Fitzsimons    schedule 28.03.2017