Angular -CLI proxy для бэкэнд не работает

https://github.com/angular/angular-cli#proxy-to-backend здесь приведена инструкция о том, как выполнять проксирование на бэкэнд. Я делал все шаг за шагом, и все еще запросы не проксированы.

8080 - мой экспресс-сервер 4200 - интерфейс Angular2

В проекте Angular2 у меня есть файл proxy.cons.json с контентом вроде этого:

{
  "/api": {
    "target": "http://localhost:8080",
    "secure": false
  }
}

В Angular2 package.json я изменил процедуру start на "start": "ng serve --proxy-config proxy.conf.json"

Когда я печатаю внутри commander npm start, то в начале я вижу Proxy created: /api -> http://localhost:8080. Хорошо, до сих пор хорошо, я думаю.

Я пытаюсь отправить запрос (Angular2)

  constructor(private http: Http) {
    this.getAnswer();
  }

  getAnswer(): any {
    return this.http.get("/api/hello")
      .subscribe(response => {
        console.log(response);
      })
  }

Я получаю сообщение об ошибке http://localhost:4200/api/hello 404 (Not Found). Как мы видим, ничего не было проксировано. Зачем? Я сделал что-то не так?

Быть ясным. Когда я перехожу вручную в http://localhost:8080/hello, все работает нормально. На стороне бэкэнда нечего искать.

Ответы

Ответ 1

Не могли бы вы попробовать с этим:

{
  "/api": {
    "target": "http://url.com",
    "secure": false,
    "pathRewrite": {"^/api" : ""}
  }
}

Это работает для меня,

** NG Live Development Server is running on http://localhost:4200. **
 10% building modules 3/3 modules 0 active[HPM] Proxy created: /api  ->  http://ec2-xx-xx-xx-xx.ap-south-1.compute.amazonaws.com
[HPM] Proxy rewrite rule created: "^/api" ~> ""

Ответ 2

Это было близко к работе для меня. Также нужно было добавить

"changeOrigin": true,

полный прокси .conf.json, показанный ниже:

{
  "/proxy/*": {
  "target": "https://url.com",
  "secure": false,
  "changeOrigin": true,
  "logLevel": "debug",
  "pathRewrite": {"^/proxy" : ""}
  }
}

Ответ 3

Мне пришлось сделать небольшую настройку, основанную на вышеупомянутых ответах, хотя сейчас кажется немного странным, глядя на конфигурацию.

Это мой прокси .conf.json, показанный ниже:

{
  "/api/*": {
     "target": "https://url.com",
     "secure": false,
     "changeOrigin": true,
     "logLevel": "debug",
     "pathRewrite": {"^/api" : "http://url.com/api"}
  }
}

В принципе, я полностью переписал путь. И теперь это работает.

Ответ 4

В MAC это работает для меня

Angular 4 работает localhost: http://localhost:4200/

В package.json

"start": "ng serve --proxy-config proxy.config.json",

В proxy.config.json

Где наш-сервер-сервер будет заменен вне сайта URL

{
  "/v1": {
    "target": "https://our-company-server.com:7002",
    "secure": false,
    "logLevel": "debug"
  }
}

Если запрос angular GET будет...

this.http.get('/v1/dashboard/client', options).map...

// options are headers, params, etc...
// then .map the observable in this case.

Ответ 5

Для тех, у кого есть собственный домен localhost, обратитесь к этому решению

{
  "/api/*": {
    "target": "http://backend.site.example",
    "secure": false,
    "changeOrigin": true,
    "pathRewrite": {
      "^/api": "http://backend.site.example/api"
    }
  }
}

Ответ 6

    Please follow below steps

    1 In Angular project create a file called  **proxy.cons.json** with content like this:

    {
        "/api/*": {
          "target": "http://127.0.0.1:8080",
          "secure": false,
          "logLevel": "debug",
          "changeOrigin": true
        }
      }

    2 edit package.json file and add below code

      "start": "ng serve --proxy-config proxy.conf.json"


    3 call your backend api like this

       this.http.get('/api/v1/people')
      .map(res => res.json());

    4 run npm start or ng serve --proxy-config proxy.conf.json

Ответ 7

эта работа для меня proxy.config.json файл

{
"/api": {
    "target": "http://localhost:3000",
    "secure": false,
    "changeOrigin": true
    }
}

и добавьте "ng serve --proxy-config proxy.config.json" в package.json и выполните команду npm start