2015-10-15 28 views
0

我正在创建角度资源,如下所示。避免从角度资源POST请求的身体属性

var Book = $resource(baseUrl + 'v1/users/:username/books/:id', { 
     username: '@username' 
     id: '@bookId' 
     }); 

我送使用save()如下一个POST电话。 Book.save({用户名: 'TESTUSER',BOOKID:1,显示:真})

这产生URL正确

v1/users/testuser/books/1 

但它与show:true其一起发送usernameid在身体我想避免。如何避免usernameid身体?

+0

包括在URL中显示参数。但是,如果进行POST,最好不要将数据参数放入URL中。我在某处读到URL和body的参数不应该混合在一起,就像你的情况一样,我忘记了URL和body中的参数不应该混合的原因。 –

+0

同意。但我正在使用提供这样的URI的API。所以不知何故,我必须使用资源管理相同。 – thecodejack

回答

0

下面是我如何做到的。我使用了动作的transformRequest属性并删除了不必要的属性。

var Book = $resource(baseUrl + 'v1/users/:username/books/:id', { 
     username: '@username' 
     id: '@bookId' 
     }, { 
     customSave: { 
     method: 'POST', 
     transformRequest: function(body) { 
      delete body.username; 
      delete body.id; 
      return angular.toJSON(body); 
     } 
     } 
}); 
+0

这也解决了我的问题!谢谢:)但是,有一个更清晰的方式来实现这一目标? –