Настройте перенаправление всех вызовов $http и $resource на другую конечную точку

Я хотел бы запустить фиктивный сервер, например. JSON Server и переключаться между моим реальным бэкэндом Java REST API и этим Сервер JSON во время разработки (например, когда реальные серверные службы не работают). Есть ли способ легко настроить angular для использования другого хоста для всех запросов?

Моя установка:

  • localhost:8080 — приложение Spring MVC, обслуживает SPA + API
  • localhost:8080/api — Spring MVC Rest API
  • localhost:9090/api — сервер JSON

И я хотел бы переключаться между вызовами localhost:8080/api и localhost:9090/api одной строкой для всего приложения Angular.


person dragonfly    schedule 21.02.2017    source источник
comment
stackoverflow.com/questions/17876439/   -  person Ankh    schedule 21.02.2017
comment
Не уверен, что вы используете для маршрутизации своих запросов к указанным серверным службам, но если вы используете серверную часть node/Express, вы можете установить и использовать переменные среды, чтобы определить, находитесь ли вы в разработке, и использовать эту логику для маршрутизации запросов.   -  person frishi    schedule 21.02.2017
comment
Пожалуйста, проверьте обновленный вопрос   -  person dragonfly    schedule 21.02.2017
comment
вам нужно либо написать свой код, который вы можете переключать (что на самом деле является хорошей практикой), либо вам нужно прокси-запросы (мы делаем это с помощью веб-пакета - просто погуглите что-то вроде «прокси + json-сервер»).   -  person Petr Averyanov    schedule 21.02.2017
comment
@PetrAveryanov: если я правильно понял, этот прокси с веб-пакетом можно сделать, если бэкэнд работает в узле / использует сервер разработки веб-пакета?   -  person dragonfly    schedule 21.02.2017


Ответы (2)


Мы можем установить переменную prefixURI, чтобы быстро перейти к указанию другого API.

Использование:

var prefixURI ='https://••••':
//var prefixURI = '';//if you are on same port it is empty
$http.get(prefixURI+'posts');
person raja reddy    schedule 21.02.2017

@PetrAveryanov дал мне подсказку. Используя json-proxy, это так же просто, как запустить прокси:

json-proxy -p 8081 -f "/api=http://localhost:9090" -f "/=http://localhost:8080"

И доступ к приложению через порт 8081. «Обычные» запросы будут по-прежнему передаваться 8080 (Tomcat, обслуживающий приложение Spring MVC). Все вызовы API будут направляться на 9090 (сервер JSON).

person dragonfly    schedule 21.02.2017