Javascript 在运行时使用AngularJS中的$http$资源时覆盖目标服务器
我有多个服务提供对api控制器的访问,例如:Javascript 在运行时使用AngularJS中的$http$资源时覆盖目标服务器,javascript,angularjs,Javascript,Angularjs,我有多个服务提供对api控制器的访问,例如: app.service('adminSvc', function($resource) { return { getTextSample: function() { return $resource('/admin/TextGenerator/GetTextSample').get(); } } }); 有没有比在变量中提供服务器更好的方法 app.service('a
app.service('adminSvc', function($resource) {
return {
getTextSample: function() {
return $resource('/admin/TextGenerator/GetTextSample').get();
}
}
});
有没有比在变量中提供服务器更好的方法
app.service('adminSvc', function($resource) {
return {
getTextSample: function(server) {
return $resource(server + '/admin/TextGenerator/GetTextSample').get();
}
}
});
您可以创建一个配置服务器,用于保存所有基本URI和凭据,这些URI和凭据可以在需要时注入,也可以创建一个通信服务器来处理所有请求,并将相对、路径、方法和参数作为参数,发出请求并返回要在其他服务上处理的承诺。这两种方法都允许您抽象层。第二种方法允许您分离通信,并在您决定切换提供商时提供更大的灵活性,因为您的服务将只处理承诺而不处理实际通信,它们将能够处理网络响应、内存数据、,或者文件数据我最近遇到了这样的问题,我通过列出我的所有url解决了这个问题,并使用
$interpolate
服务通过使用某个基本url解析所有url
类似这样,使用插入每个属性值并将其分配给REST
servicesurl
属性的方法stringResolver()
创建Utils
服务
.factory('Utils', function($interpolate) {
return {
stringResolver: stringResolver
};
function stringResolver(objectStrings) {
var string, index;
for(index in objectStrings)
objectStrings[index] = $interpolate(objectStrings[index])(objectStrings);
return objectStrings;
}
})
.factory('REST', function(Utils) {
var REST = {},
URLS = REST.URLS = Utils.stringResolver({
BASE: 'http://my-base-url.com',
AUTHORIZATION: '{{BASE}}/oauth/access_token',
REFRESH_AUTHENTICATION: '{{BASE}}/refresh',
LOGIN: '{{BASE}}/login',
REGISTER: '{{BASE}}/register',
USER: '{{BASE}}/user',
USERS: '{{BASE}}/users/:user_id',
MODULES: '{{BASE}}/modules/:module_id',
READINGS: '{{MODULES}}/readings/:reading_id',
QUESTIONS: '{{READINGS}}/exam/questions/:question_id',
CHOICES: '{{QUESTIONS}}/choices/:choice_id'
});
REST.LOGIN = $resource(REST.URLS.LOGIN);
REST.REGISTER = $resource(REST.URLS.REGISTER);
return REST;
});
这个问题对你有帮助吗?