Как проксировать запросы API? (Angular-CLI)

Я работаю над проектом Java с Spring-4 и Angular-5. Сессия создается на пружинной стороне.

Итак, я не могу сгенерировать этот сеанс из службы angular. Он работает над Postman, и я могу получить ответ в PostMan. Но он не работает с вызовом метода Angular post.

Итак, я подумал, что это может быть проблема прокси. (Коррент меня, если я ошибаюсь).

Итак, мой локальный URL: - http: // localhost: 8080 / MacromWeb / ws / логин Итак, как я могу создать файл proxy.conf.json?

Для этого я добавил этот код в свой файл package.json,

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

Я создал новый файл под названием proxy.conf.json. И поместите в него этот код.

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

Затем я попробовал с ng serve и npm start.

Скриншот почтальона. Как проксировать запросы API? (Angular-CLI)

И когда вы делаете http-вызов, какую конечную точку вы используете?

CornelC 18.05.2018 11:47
1
1
737
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете добиться этого через прокси. Вам необходимо указать правильные значения в конфигурации прокси.

/* тоже должен работать, но если MacromWeb распространен в URL-адресах API, то вместо / предоставьте /MacromWeb/*

proxy.conf.json выглядит примерно так,

{
    "/MacromWeb/*": {
        "target": {
            "host": "localhost",
            "protocol": "http:",
            "port": 8080
        },
        "secure": false,
        "changeOrigin": true,
        "logLevel": "debug"
    }
}

Надеюсь, поможет.

Ок. Спасибо за быстрый ответ. Это код для proxy.conf.json?

Bhavin 18.05.2018 11:50

Да, это proxy.conf.json, хотя я бы посоветовал вам использовать файл javascript proxy.conf.js, если вызовы API приложения выполняются на разные конечные точки API (или разные серверы)

Basavaraj Bhusani 18.05.2018 11:52

Я пробовал твой код, брат. Это не работает. Мне нужно что-нибудь поменять на package.json? У меня есть вопрос, что я использую эту службу с этого URL-адреса http://localhost:4200/#/pages/login, и я звоню по этому URL-адресу http://localhost:8080/MacromWeb/ws/login. Так это работает?

Bhavin 18.05.2018 11:56

@Bhavin, Вы не должны явно использовать весь URL-адрес вроде этого -> http://localhost:8080/MacromWeb/ws/login при вызове API, вы должны использовать что-то вроде этого -> this.http.get("MacromWeb/ws/login")

Basavaraj Bhusani 18.05.2018 11:59

Базовый путь также имеет значение, какой базовый путь вы используете в index.html?

Basavaraj Bhusani 18.05.2018 12:00

Базовый путь: - <base href = "./">

Bhavin 18.05.2018 12:00

Ага. Я использую URL-адрес, подобный этому this.http.get("MacromWeb/ws/login"), при вызове URL-адреса веб-службы.

Bhavin 18.05.2018 12:02

Позвольте нам продолжить обсуждение в чате.

Basavaraj Bhusani 18.05.2018 12:03

Допустим, у нас есть сервер, работающий на http: // локальный: 3000, и мы хотим, чтобы все вызовы http: // локальный: 4200 / api направлялись на этот сервер.

В наш файл proxy.conf.json мы добавляем следующий контент

{
  "/api": {
    "target": "http://localhost:3000",
    "secure": false,
    "pathRewrite": {
      "^/api": ""
    }
  }
}

Подробнее об этом: здесь

Другие вопросы по теме