#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 с его помощью, но если вы можете определить константу или настроить службу в блоке конфигурации, это определенно сработает.