如何在 AngularJS 上验证对 OrientDB 函数的 HTTP 请求?
How to authenticate a HTTP request to an OrientDB function on AngularJS?
我有以下 OrientDB 函数:
http://localhost:2480/function/Application/getPassFailCount/9:600
它 returns 以下 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 Unauthorized”。如何验证请求?
如果可能的话,谁能提供一些关于如何从返回的 JSON 结果中获取 passCount
和 failCount
的提示?
OrientDB HTTP API documentation 声明您必须使用 HTTP 基本身份验证来发出命令。这意味着您必须在请求中包含 Authorization
header。
有几种方法可以实现这一点,这里有一种更简单的方法。使用 $http.get
的配置 object 参数在请求中设置 header:
function base64(str) {
return btoa(unescape(encodeURIComponent(str)));
}
$http.get('http://...', {
headers: { 'Authorization': 'Basic ' + base64(user + ':' + password) }
}).success(...);
您绝对应该将所有数据库逻辑移至 Angular 服务,这样您就可以将此代码保存在一个地方而不是污染您的控制器。
为了让它更清晰,您可以查看 $http interceptors 并编写一个请求拦截器,将 header 添加到 每个 HTTP 调用。
关于 JSON 问题:您可以看到结果 object 包含一个只有一个元素的数组。使用索引获取实际记录。
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 };
});
}
我有以下 OrientDB 函数:
http://localhost:2480/function/Application/getPassFailCount/9:600
它 returns 以下 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 Unauthorized”。如何验证请求?
如果可能的话,谁能提供一些关于如何从返回的 JSON 结果中获取 passCount
和 failCount
的提示?
OrientDB HTTP API documentation 声明您必须使用 HTTP 基本身份验证来发出命令。这意味着您必须在请求中包含 Authorization
header。
有几种方法可以实现这一点,这里有一种更简单的方法。使用 $http.get
的配置 object 参数在请求中设置 header:
function base64(str) {
return btoa(unescape(encodeURIComponent(str)));
}
$http.get('http://...', {
headers: { 'Authorization': 'Basic ' + base64(user + ':' + password) }
}).success(...);
您绝对应该将所有数据库逻辑移至 Angular 服务,这样您就可以将此代码保存在一个地方而不是污染您的控制器。
为了让它更清晰,您可以查看 $http interceptors 并编写一个请求拦截器,将 header 添加到 每个 HTTP 调用。
关于 JSON 问题:您可以看到结果 object 包含一个只有一个元素的数组。使用索引获取实际记录。
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 };
});
}