1

我对 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;

我相信上述工厂设置正确。我已验证创建用户的后端 REST 服务也可以正常工作。前端有一个表单,允许用户输入 FirstName、LastName 和 Email,它们应该是 User 对象的一部分。我认为 User 对象应该通过以下方式提交给 Rest 服务:

Step1: 用用户数据创建一个对象 Step2: User.createUser.query(user:)

我不确定这些步骤是否正确,如果它们是正确的,那么如何准确地制作对象。有人可以提供一些指导方针。谢谢

4

2 回答 2

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'});    

 });
于 2013-10-23T14:41:27.100 回答
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;        
});

您可以在此处此处找到有关 java 中的 rest 的更多信息,有关角度资源的信息请参见此处

于 2013-10-23T14:28:17.297 回答