Angular Proxy.Conf.Json не работает против нескольких API - PullRequest
1 голос
/ 07 июня 2019

У меня есть следующие proxy.conf.json, строки журнала и вызовы API.

  {
  "/first/api/": {
    "target": "/first/api/",
    "secure": false,
    "logLevel": "debug"
  },
  "/second/api/": {
    "target": "/second/api/",
    "secure": false,
    "logLevel": "debug"
  }


[HPM] GET /first/api/values-> /first/api/
[HPM] GET /second/api/dummy -> /second/api/

return this.http.get<any>(this.firstApi + 'values')
return this.http.get<any>(this.secondApi + 'dummy')

Учитывая, что я вижу строки журнала, я считаю, что proxy.conf.json правильно подобрал APIзвонки, но я получаю 404, когда звонок выходит.Журналы только выводят цель, поэтому мне неясно, как составить URL, который мне нужен, например: localhost / first / api / values ​​

Это работает правильно, когда есть только один API:

  {
  "/api/": {
    "target": "/first/",
    "secure": false
  }

Кто-нибудь может посоветовать мне дальнейшие шаги по отладке?


решено

ответ yanky_crankyбыло правильно.В качестве помощника в понимании того, как его ответ связан с тем, что я видел, мне также нужно было просмотреть журналы IIS.Здесь я мог видеть, как были названы URL.

1 Ответ

3 голосов
/ 07 июня 2019

Во-первых, здесь вы неправильно используете прокси-концепцию Angular.

1) О прокси : прокси может использоваться для сопоставления любого запроса, например '/ first / api', с целевым конкретным "доменом", недоступным для вас. Если API-интерфейс не является общедоступным, это приведет к проблеме cors (которая является свойством браузера), если API-интерфейс указывает на другой хост: {то есть, имя хоста или порт или оба они разные} С помощью Angular на этапе разработки мы можем использовать ту же концепцию обратного прокси, что и в Nginix, и ориентироваться на нужный домен.

Подробнее о прокси здесь

2) ваш конф Nginix приведет к: следующие пути:

  {
  "/first/api/": {
    "target": "/first/api/",  
    "secure": false,
    "logLevel": "debug"
  },

/ first / api / first / api /, таким образом, вы получаете 404

  "/second/api/": {
    "target": "/second/api/",
    "secure": false,
    "logLevel": "debug"
  }

/ сек / API / сек / API /, то же 404

3) Правильная настройка :

 {
  "/first/api/": {

    "target": "http://localhost:{portNo}",

    "secure": false,

    "logLevel": "debug"

  },
  "/second/api/": {

    "target": "http://localhost:{portNo}",

    "secure": false,

    "logLevel": "debug"

  }

Эти API будут затем нацелены на:

http://localhost:{portNo}/first/api

http://localhost:{portNo}/second/api

ура (у)

...