2016-07-25 58 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'动作。如果您在不久的将来找到解决方案,请分享 –