我的应用程序多次调用$ HTTP:
this.$http({
method: this.method,
url: this.url
})
this.url总是设置为/ app / getdata
现在我已将应用程序的后端移动到另一台服务器,我需要获取这样的数据:
https://newserver.com/app/getdata
有没有办法可以提供将用于所有$ http调用的基本网址?
答案 0 :(得分:19)
我找到了替代<base>
标记的替代解决方案:
用coffeescript写的
$httpProvider.interceptors.push ($q)->
'request': (config)->
if config.url.indexOf('/api') is 0
config.url = BASE_URL+config.url
config
答案 1 :(得分:7)
我通常会在角度常量中保留设置并将它们注入服务。
答案 2 :(得分:1)
我倾向于保持我的网址接近他们需要的地方。所以,如果我有服务,那么我会保留基本网址;像这样:this.rootUrl = '/api/v1/';
这允许我有额外的上下文方法来“扩展”网址。
例如:
this.getBaseUrl = function(client_id, project_id) {
return this.rootUrl + 'clients/' + client_id + '/projects/' + project_id + '/';
};
我可以这样使用:
this.createActivity = function(client_id, project_id, activity_name, callback) {
$http.post(this.getBaseUrl(client_id, project_id) + 'activities', {activity: {name: activity_name}})
.success(callback)
.error(this.handlerError);
};
或像这样(在同一服务中):
this.closeActivity = function(activity_id, callback){
$http.get(this.rootUrl + 'close_activity/' + activity_id)
.success(callback)
.error(this.handlerError);
};
-harold
答案 3 :(得分:-2)
在$rootScope
中设置baseUrl:
app.run(function($rootScope) {
$rootScope.baseUrl = "https://newserver.com";
});
将$rootScope
添加到您应用的控制器中:
app.controller('Controller', ['$rootScope', function($rootScope){
...
this.$http({
method: this.method,
url: $rootScope.baseUrl + this.url
})