如何使用 angular.js 从 Java REST 服务获取数据
2014-03-15
2192
我在 Netbeans 上使用默认的 JEE7 REST 应用程序。我尝试调用的 REST 方法是:
@GET
@Path("{id}")
@Produces({"application/xml", "application/json"})
public Customer find(@PathParam("id") Integer id) {
return super.find(id);
}
我可以成功获取所有客户的列表。但是,当我使用 angular 在客户端获取客户 ID 时,它会生成此 URL:
http://localhost:8080/mavenproject2/customers?0=1
(当我传递 ID 为 1 时) 添加“?”和添加的索引“0=”导致调用失败。
http://localhost:8080/mavenproject2/customers/1 works
我的服务如下所示:
customerServices.factory('customerById', function ($resource) {
return $resource('http://localhost:8080/mavenproject2/customers/:id', {id: "@id"}, {
query: {method: 'GET', isArray: true}
});
})
我的控制器如下所示:
.controller('customerDetailsController', function ($scope, $routeParams, customerById) {
$scope.customer = customerById.query($routeParams.customerId);
});
非常感谢您的帮助。
2个回答
您应将参数作为对象传递,并使用
@
指定字段。对于您的情况:
$scope.customer = customerById.query({ id: $routeParams.customerId });
Nikos Paraskevopoulos
2014-03-15
您可以在控制器中尝试类似的操作:
$scope.fetchData = function() {
$http({
method : 'GET',
url : 'http://localhost:8080/mavenproject2/customers/',
params : {id : theIdFromYourCode}
}).success(function(data) {
// do something
}).error(function(data, status) {
// do something if error
});
};
请注意,您必须包含 $http 模块。
ABucin
2014-03-15