Api 运行中的Restangular挫折URL出错?
我的角度服务模块中有三个服务,我把Api 运行中的Restangular挫折URL出错?,api,url,angularjs,service,restangular,Api,Url,Angularjs,Service,Restangular,我的角度服务模块中有三个服务,我把 Restangular.setBaseUrl(api_url); 在我的每个服务中使用不同的api_url,我希望使用不同的服务使用不同的url 但是当我发布到一个服务,比如说api_url=a/v1/c/,我得到的是发布到api_url=b/v1/c 我认为问题在于setBaseUrl部分,例如: factory.Aservice = function(Restangular){ Restangular.setBaseUrl('/a/v1');
Restangular.setBaseUrl(api_url);
在我的每个服务中使用不同的api_url,我希望使用不同的服务使用不同的url
但是当我发布到一个服务,比如说api_url=a/v1/c/,我得到的是发布到api_url=b/v1/c
我认为问题在于setBaseUrl部分,例如:
factory.Aservice = function(Restangular){
Restangular.setBaseUrl('/a/v1');
var alist= Restangular.all('c/');
return {
createA:function(){
alist.post(data)
}
}
}
factory.Bservice = function(Restangular){
Restangular.setBaseUrl('/b/v1');
var blist= Restangular.all('d/');
return {
createB:function(){
blist.post(data)
}
}
}
调用Aservice.createA()时,post url是“/b/v1/c”,这是错误的
知道为什么吗?你似乎不了解服务的范围界定。Angular以延迟加载的方式实例化服务。由于您的两个服务都在同一个重新启动语言上运行,所以最后加载的服务通常是最后覆盖重新启动语言配置的服务: 我创建了一个Plunkr来说明这一点 还创建了一个Plunkr,显示了正确的方法
您似乎不了解服务的范围界定。Angular以延迟加载的方式实例化服务。由于您的两个服务都在同一个重新启动语言上运行,所以最后加载的服务通常是最后覆盖重新启动语言配置的服务: 我创建了一个Plunkr来说明这一点 还创建了一个Plunkr,显示了正确的方法
您也可以为每个服务使用单独的配置,如下所述:
您还可以为每个服务使用单独的配置,如下所述:
哦,真让人困惑。所以我应该按顺序注入服务吗?不,你永远不应该依赖注入顺序。您应该确保每个服务调用都经过适当的重新启动配置,如第二个plunkr所示。很高兴我能帮上忙哦,真让人困惑。所以我应该按顺序注入服务吗?不,你永远不应该依赖注入顺序。您应该确保每个服务调用都经过适当的重新启动配置,如第二个plunkr所示。很高兴我能帮忙
app.factory('ServiceA', function(Restangular) {
return Restangular.withConfig(function(RestangularConfigurer) {
// service has different address from serviceB
RestangularConfigurer.setBaseUrl('http://service-a.example.com/a/v1');
});
});
app.factory('ServiceB', function(Restangular) {
return Restangular.withConfig(function(RestangularConfigurer) {
// service has different address from serviceA
RestangularConfigurer.setBaseUrl('http://service-b.example.com/b/v1');
});
});