Настройка внешнего http-сервиса в angularjs

#angularjs #angular-ui

#angularjs #angular-пользовательский интерфейс

Вопрос:

У меня есть одностраничное приложение angular, которое вызывает службу RESTish. Как я могу настроить базовый URL для моего сервера REST, чтобы в своих сервисах я мог использовать относительные URL-адреса? Кроме того, когда я играл со следующим перехватчиком, я получил сообщение об ошибке, когда маршрутизатор angular-ui, казалось, использовал http для получения просмотров, поэтому на это повлияло промежуточное программное обеспечение. В принципе, я предполагаю, что я хочу, чтобы вторая http-служба внедрялась в мои сервисы с этим промежуточным программным обеспечением, как я могу это сделать?

 app.config(["$httpProvider", function($httpProvider) {
    $httpProvider.interceptors.push('middleware');
}]);

app.factory('middleware', function() {
    return {
        request: function(config) {
            // need more controlling when there is more than 1 domain involved
            config.url = "http://localhost:8080"   config.url;
            return config;
        }
    };
});
  

Ответ №1:

$http Сервисы очень важны (и широко используются) внутри Angular.
Вам не следует так его изменять.

Для обработки запросов к API лучше всего создать выделенный сервис (даже если это оболочка вокруг $http ).

Например.:

 .service('API', function ($http) {
    var baseUrl = 'http://localhost:8080/';
    this.get = function (path, config) {
        return $http.get(baseUrl   path, config);
    }
    ...
});
  

Затем вы можете использовать свой сервис для всех вызовов API:

 .controller('someCtrl', function (API) {
    API.get('items').success(function (data) {
        $scope.items = data;
    });
});
  

Комментарии:

1. Ну, у меня есть сервис, но я хочу настроить базовый URL в моем app.js и, в конечном итоге, в приложение с использованием gulp.

2. но я понимаю, что вы говорите о том, чтобы не изменять его подобным образом, поэтому подход промежуточного программного обеспечения определенно неверен. Я думаю, мне просто нужно создать константу в app.js ?

3. Я не знаком с рабочим процессом gulp и с тем, как вы можете настроить базовый URL с его помощью, но если вы можете определить константу или настроить службу в блоке конфигурации, это определенно сработает.