2015-10-15 30 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

這也解決了我的問題!謝謝:)但是,有一個更清晰的方式來實現這一目標? –