2016-07-25 57 views
0

通過發送一些POST未參數和一些我們有這個服務使用NG-資源:

var app = angular.module('salonesbelleza', []); 
app.service("CentroBorrar_srv", function ($resource, UrlBaseApi_srv) { 
return{ 

     return $resource('wa-centros/:id', 
      {id:'@id', access_token:'@access_token'}, 
      { "post": { method: "DELETE", 
       isArray: false, 
       headers: { 
        'Accept': 'application/json; q=1.0, */*; q=0.1', 
        'Content-Type':'application/json' 
       } 
      }} 
     ); 

} 

});

在控制器中,我們用這種方式

var CentroBorrar_data = CentroBorrar_srv.post({ 
      id:10, 
      othervar1:'VALUE_1', 
      othervar1:'VALUE_2', 
      access_token:'MY TOKEN' 
     }); 

有了這個NG-資源我們刪除使用一些額外的增值經銷商與ID = 10的元素像acces_token

這項工作非常好。 這是由該NG-資源

wa-centros/10?access_token=MY_TOKEN&othervar1=VALUE_1&othervar2=VALUE_2 

所有瓦爾使用的URL發送GET生成的URL,但我們要發送POST使用和其他一些增值經銷商使用GET。例如,我們想使用POST發送othervar1和othervar2。

有沒有辦法,我們可以在其中VAR的控制器必須通過郵局發送,必須使用發送的NG-資源定義強制GET

我覺得在這個問題上

謝謝你輸了非常提前

回答

0

是的,可以添加參數。你必須爲此聲明一個自定義操作。 有兩種方法,其中具有「非GET」類型的自定義動作可以創建(如從角文檔截取):

  1. 非GET「類」動作:Resource.action([參數],POSTDATA,[成就],[錯誤])
  2. 非GET實例動作:例如$行動([參數],[成功],[錯誤])

,我看到你正在使用第一個,即非GET「類」動作。 根據您的例子中,你應該有這樣的事情:那PARAMS已添加到您的資源的行動,即yourParam1

return $resource('rest-link/:id', 
      {id:'@id', access_token:'@access_token'}, 
      { "yourCustomActionNameHere": { method: "POST", 
       isArray: false, 
       headers: { 
        'Accept': 'application/json; q=1.0, */*; q=0.1', 
        'Content-Type':'application/json' 
       }, 
       params : {yourParam1 : val} 
      }} 
     ); 

通知。正如我前面提到的,它是一個非GET「類」操作,這意味着您也傳遞數據對象。呼喚你的資源,像這樣的時候,你應該考慮到這一點:

<YourResourceNameHere>.yourCustomActionNameHere({yourParam1: 12}, dataObject) 

你應該照顧與參數,即使用默認參數。在的情況下非GET方法像你不是一個參數paramName提供價值,意味着搜索將繼續以您在發送給POST方法您dataObject定義的對象屬性,尋找一個name-value對,其中name與您的paramName相同。


你應該有實例方法一看,他們更容易在我看來,使用,並提供更大的靈活性和可讀性。 例如,您可以撥打CentroBorrar.$save({param : val})作爲POST操作,其中CentroBorrar是一個實例,它將保存您的數據對象。 (簡短示例here)。 真的希望這有助於。

+0

非常感謝您的所有信息。等不及要投入實踐,然後讓你知道肯定它很多,因爲有很多新的信息,我不知道ngresources – Falinsito

+0

仍然需要解決一些問題。在您的示例中,創建一個自定義操作並將其設置爲POST。這樣你可以通過POST獲取變量。但我需要使用方法DELETE,因爲這是行動需要我的服務器,我的問題是與此操作ngresource通過GET發送所有參數。但後端需要我通過Get發送一些參數,並且通過POST以相同的動作發送一些音頻。那可能嗎?我可以在資源行爲中指定哪些變量必須通過POST並且必須通過GET。例如使用DELETE操作。 – Falinsito

+0

我不知道可以做什麼。我不確定這是否是一種可能性,在同一個動作(不同的參數)中執行POST和GET,我試圖研究可以爲此編寫自定義動作的方式,但我找不到任何真正的東西。你可以在你的後端部分(例如'spring'或者你正在使用的任何東西)中嘗試執行GET操作,然後在與db執行相同事務時執行DELETE操作。也許發送DELETE動作的一些參數,然後GET數據,然後繼續執行'delete'動作。如果您在不久的將來找到解決方案,請分享 –