2015-06-27 2 views
2

У меня есть основы Spring Cloud, работающие со шлюзом (с прокси-сервером Zuul Proxy) (/ ui,/admin в качестве отдельных микросервисов). Я следую spring boot blog by Dave SyerВесеннее ботинковое облако Zuul Proxy - ссылки на прокси-сервер жестко запрограммированного кода

zuul: 
    routes: 
    ui: 
     url: http://localhost:8081 
    admin: 
     url: http://localhost:8082 
    resource: 
     url: http://localhost:9000 

Идея заключается в том, что gateway (Zuul) будет работать на 8080 и передние конечные приложения (UI и Admin) будет знать только gateway и не имеют никакого знания ui и admin backend end URLs. Приложение админ просто свяжитесь с `http://localhost:8080/admin '

установки работает отлично, за исключением того, что передний конец приложение (для Ex: admin) придется жёстко на /admin маршрут в качестве префикса во все JS & HTML кода. 2 примеры ниже:

Следующие не работают (в admin.js).

angular.module('admin', []).controller('home', 
function($scope, $http) { 

    var computeDefaultTemplate = function(user) { 
     $scope.template = user && user.roles && 
     user.roles.indexOf("ROLE_WRITER")>0 ? "write.html" : "read.html";  
    } 

Однако после действительно работает: существуют

angular.module('admin', []).controller('home', 

function($scope, $http) { 

    var computeDefaultTemplate = function(user) { 
     $scope.template = user && user.roles && 
     user.roles.indexOf("ROLE_WRITER")>0 ? "admin/write.html" : "admin/read.html";  
    // ..... !! NOTE the hardcoding of 'admin/' prefix route !!! 

    } 

Похожие вопросы в админ приложения: index.html

Works (но не желательно):

<body ng-app="admin" ng-cloak class="ng-cloak" ng-controller="home"> 
    ... 
    ..... !! NOTE the hardcoding of 'admin/' prefix route !!! 
    <script src="admin/js/admin.js" type="text/javascript"></script> 
    .... 
</body> 
</html> 

Безразлично» т:

<body ng-app="admin" ng-cloak class="ng-cloak" ng-controller="home"> 
    ... 
    <script src="js/admin.js" type="text/javascript"></script> 
    .... 
</body> 
</html> 

Очевидно, что это жесткое кодирование маршрута «/ admin» во всех ссылках на href во всех HTML и JS-коде в администраторе нежелательно. Как я могу это преодолеть (как сохранить относительные ссылки в моем коде администратора)?

+0

так это угловой код на HTTP: // локальный: 8082 в сервисе 'администратор'? – freakman

+0

да. Я отредактирую вопрос с этой запиской. – mpprdev

+0

Если вы проходите через маршрутизатор zuul, вам нужно знать контекст. Я не вижу никакого способа «/ admin» в вашем js. Почему это «нежелательно»? – spencergibb

ответ

0

Извините, я до сих пор не следую этому потоку. Похоже, что этот угловой код является клиентом, а «admin/write.html» должен проходить через zuul до http://localhost:8082/write.html? Я не знаю внутренних элементов, но, возможно, когда вы используете идентификатор службы «admin» без «пути», тогда zuul не является чередующимся префиксом?

Попробуйте с ним:

zuul: 
    routes: 
    admin: 
     path: /admin/** 
     stripPrefix: true 
     url: http://localhost:8082