如何对AngularJS上的OrientDB函数的HTTP请求进行身份验证?
我有以下OrientDB功能:如何对AngularJS上的OrientDB函数的HTTP请求进行身份验证?,angularjs,httprequest,orientdb,Angularjs,Httprequest,Orientdb,我有以下OrientDB功能: http://localhost:2480/function/Application/getPassFailCount/9:600 并返回以下JSON结果: {"result":[{"@type":"d","@version":0,"pass":16.0,"fail":2.0,"@fieldTypes":"pass=d,fail=d"}]} 我需要做的是获取“pass”和“fail”的值,以便在我的网页中使用 到目前为止,我已经用AngularJS完成了这项工
http://localhost:2480/function/Application/getPassFailCount/9:600
并返回以下JSON结果:
{"result":[{"@type":"d","@version":0,"pass":16.0,"fail":2.0,"@fieldTypes":"pass=d,fail=d"}]}
我需要做的是获取“pass”
和“fail”
的值,以便在我的网页中使用
到目前为止,我已经用AngularJS完成了这项工作:
$http.get('http://localhost:2480/function/Application/getPassFailCount/9:600').
success(function(data) {
$scope.data = data.result;
// $scope.passCount = ;
// $scope.failCount = ;
});
目前,它给出了错误“401未经授权”。如何对请求进行身份验证
如果可能的话,任何人都可以给出一些提示,说明如何从返回的JSON结果中获取passCount
和failCount
。这意味着您必须在请求中包含授权
标题
有几种方法可以实现这一点,这里有一种更简单的方法。使用$http.get
的配置对象参数设置请求的标题:
function base64(str) {
return btoa(unescape(encodeURIComponent(str)));
}
$http.get('http://...', {
headers: { 'Authorization': 'Basic ' + base64(user + ':' + password) }
}).success(...);
您肯定应该将所有数据库逻辑移动到Angular服务,这样您就可以将这些代码保存在一个地方,而不会污染控制器
为了使它更干净,您可以研究并编写一个请求拦截器,将头添加到每个HTTP调用中
关于JSON问题:您可以看到结果对象包含一个带有单个元素的数组。使用索引获取实际记录
var result = data.result[0];
$scope.passCount = result.pass;
$scope.failCount = result.fail;
如果您像我提到的那样编写了一个服务,那么您可以对控制器隐藏这个实现细节
function getCount() {
return $http.get(...).then(function (data) {
var result = data.result[0];
// the caller will only see this simpler object
return { pass: result.pass, fail: result.fail };
});
}
哇!你是救命恩人!谢谢你!