我是Anuglar JS的新手,所以在回答这个问题时请记住这一点。我的目标是在oracle数据库中创建并持久保存新用户。我的前端是用AngularJS编写的。 REST服务(使用JERSEY)已经具有如下方法签名:
@POST
@Path("/create/{user}")
public void createUser(@QueryParam("user") User user){ ...}
使用REST调用的AngularJS Factory如下所示:
angular.module('app.services', ['ngResource'])
.factory('User', function($resource)
{
return
{
createUser: $resource('/myurl/create/:user', {}, {
query: {
method: 'POST',
params: {user: '@user'},
isArray: false
}
})
});
User.java具有以下属性:
private String firstName;
private String lastName;
private String email;
我相信上面的工厂设置正确。我已经验证了create user的后端REST服务也能正常工作。前端有一个表单,允许用户输入FirstName,LastName和Email,它们应该是User对象的一部分。我认为User对象应该通过以下内容提交给Rest服务:
步骤1:使用用户的数据创建一个对象 第2步:User.createUser.query(用户:)
我不确定步骤是否正确,如果它们是如何制作对象的话。有人可以提供一些指导。谢谢
答案 0 :(得分:0)
QueryParam通常与GET方法一起使用来发送单个属性,试试这个:
在你的java代码中
@POST
@Path("/create/")
public void createUser(User user){ ...}
在你的js代码中
angular.module('app.services', ['ngResource'])
.factory('User', function($resource){
var user = $resource('/myurl/create/', {}, {
createUser: {method:'POST', params:{...}}
});
return user;
});
答案 1 :(得分:0)
您的资源应该反映的是对象而不是操作,您的资源应该被称为“用户”。创建,更新,查询反映在http方法中。
我会实现这样的事情。其中很大一部分直接取自文档 - http://docs.angularjs.org/api/ngResource。$ resource
angular.module('app.services', ['ngResource'])
.controller('MyController', function(User) {
// Query userID 123, change the firstname and lastname then save.
var user = User.get({userId:123}, function() {
user.firstname = "joe";
user.lastname = "bloggs";
user.$save();
}
// Create a new user like this.
var anotherUser = new User({
username: 'joe.bloggs',
email: 'joe.bloggs@example.com',
firstname: 'joe',
lastname: 'bloggs'
});
anotheruser.$save();
})
.factory('User', function($resource)
{
// Represent the user resource.
return $resource('/myurl/create/:userId', {userId:'@id'});
});