Angular proxy.conf.js использует неверный шлюз - PullRequest
0 голосов
/ 03 июня 2019

У меня большое приложение Angular, в котором должны быть определены несколько шлюзов.

Я реализовал это в своем файле proxy.con.js , адаптировав свой код visual studio.tasks и файл angular.json .

Тем не менее, для конкретного вызова API всегда используется неправильный шлюз, а не определенный для него.

Мой proxy.conf.js выглядит так:

var HttpsProxyAgent = require('https-proxy-agent');
var proxyConfig = [
  {
    context: '/api/**',
    target: process.env.gateway_1,
    changeOrigin: true,
    agent: new HttpsProxyAgent(process.env.http_proxy || process.env.HTTP_PROXY),
    secure: false,
    logLevel: 'debug'
  },
  {
    context: '/resources**',
    target: process.env.gateway_1,
    changeOrigin: true,
    agent: new HttpsProxyAgent(process.env.http_proxy || process.env.HTTP_PROXY),
    secure: false,
    logLevel: 'debug'
  },
  {
    context: '/api/v1/vehicles/**',
    target: process.env.gateway_2,
    changeOrigin: true,
    agent: new HttpsProxyAgent(process.env.http_proxy || process.env.HTTP_PROXY),
    secure: false,
    logLevel: 'debug'
  },
  {
    context: '/api/v1/vehicles**',
    target: process.env.gateway_2,
    changeOrigin: true,
    agent: new HttpsProxyAgent(process.env.http_proxy || process.env.HTTP_PROXY),
    secure: false,
    logLevel: 'debug'
  }
];

module.exports = proxyConfig;

Цель подачи внутри angular.json выглядит следующим образом:

"serve": {
  "builder": "@angular-devkit/build-angular:dev-server",
  "options": {
    "browserTarget": "my-ui:build",
    "port": 8080,
    "ssl": true,
    "proxyConfig": "src/proxy.conf.js"
  },
 ...

Часть сценариев package.json выглядит следующим образом:

  "scripts": {
    "ng": "ng",
    "start": "ng serve --base-href=/ui/",
   ...

А мой код Visual Studio для задач внутри tasks.json выглядит следующим образом:

{
    "version": "2.0.0",
    "options": {
      "env": {
        "gateway_1": "https://gateway1.apps.de1.my-cloud.com",
        "gateway_2": "https://gateway2.apps.de1.my-cloud.com",
        "http_proxy": "http://localhost:3128",
      }
    },
    "tasks": [
      {
        "type": "shell",
        "label": "Start Application",
        "command": "npm run start"
      },
    ....

Используется только gateway_1.Для всех вызовов, которые должны проходить через шлюз_2, я получаю 404. CLI также показывает, что выбран неверный шлюз.

GET / api / v1 / Vehicles? Размер = 100 & тип = xyz -> https://gateway1.apps.de1.my-cloud.com

Вместо

GET / API / V1 / транспортных средств? Размер = 100 & type = xyz -> https://gateway2.apps.de1.my-cloud.com

Что я делаю не так?

...