2013-12-08 117 views
4

我有一個類似於此的角度服務。在這裏我正在發一個POST請求。ngResource將POST參數附加到url

.factory("Apples", function ($resource, HOST) { 

      return $resource(
       HOST + "/apples", 
       {}, 
       { 
        create: { 
         method: 'POST', 
         params: { 
          tree_id: '@treeId', 
          name: '@name', 
          color: '@color' 
         } 
        } 
       } 
      ); 
     }) 

的問題是,上述服務使POST請求和params數據作爲表格數據發送也是params數據附加到URL作爲查詢字符串。我能避免嗎?

+1

爲什麼不使用'$ http'後? –

+0

@MaximShoustin'$ resouce'是'$ http'頂部的一個抽象,用於簡化REST並返回一個統一的查詢(和動作)REST接口。 –

+1

如果您不想要URL中的參數,請不要將它們配置爲url參數。 $ resource將按原樣發送實例數據(因此您的數據將是'treeId',而不是'tree_id'。 –

回答

6

我認爲你對如何使用$resource存在衝突。您應該像創建模型一樣創建$ resource實例,並在要發佈的對象上設置屬性。

與您Apples $資源定義如上:

var apple = new Apples(); 

apple.color = ... 
apple.name = ... 
apple.tree_id = ... 

apple.$create() 

或者您也可以直接使用在$資源類:

Apples.create({ 
    apple.color: ... 
    apple.name: ... 
    apple.tree_id: ... 
}); 

最後,$資源具有內置$save()使用您可以使用POST而不是創建自定義$create()操作。