2016-07-12 23 views
0

我有以下的工厂发送查询服务器:角资源放置操作与有效载荷

app.factory('Request', ['$resource', 
    function ($resource) { 
     var res = $resource("bin/server.fcgi/REST/" + ':resourceName/:ID', {}, { 
       get : { 
        method : 'GET' 
       }, 
       put : { 
        method : "PUT" 
       } 
      }); 
     return { 
      get : function (arguments, b, c) { 
       return res.get(arguments, b, c).$promise; 
      }, 
      put : function(arguments,b,c){ 
       return res.put(arguments, b, c).$promise; 
      } 
     }; 
    } 
]); 

我这样称呼它:

Request[methodName](params).then(successFunction).catch (failFunction); 

但是,如果我要发送一个PUT查询:

Request["put"](params).then(successFunction).catch (failFunction); 

其中

params = { 
    resourceName : "ATable", 
    ID : 222, 
    AProperty : "changedValue" 
} 

我拿那么以下请求:中

http://myadres.com/REST/ATable/222?AProperty=changedValue 

代替

http://myadres.com/REST/ATable/222 

(这样的误差)与有效载荷

{ AProperty:changedValue } 

有什么不对呢?

+0

就这一问题HTTP一看:// stackoverflow.com/questions/38308156/how-to-make-resource-post-call-without-sending-data?noredirect=1#comment64036803_38308156我评论那里,你应该这样做 - 你不需要“+” – Erez

+0

什么你的意思是不是?我尝试了你的答案的一些版本,但没有一个工作。如果你可以给出答案,那么我们可以在你的答案上讨论它。 – Asqan

+0

表明您曾尝试 – Erez

回答

1
app.service('Request', ['$resource',function ($resource) { 
     var res = $resource('bin/server.fcgi/REST/:resourceName/:ID', 
      {resourceName: "@resourceName", ID: "@ID"}, 
      { 
       get : { method : 'GET'}, 
       put : { method : "PUT", params: {resourceName:"@resourceName", ID: "@ID"}//you can leave the string empty if you dont want it to be a defualt value like ID:"" 
      }); 

     this.get = function() { 
      return res.get().$promise; 
     } 
     this.put = function(obj){ 
      return res.put(obj).$promise; // it can be also {like json with your params} 
     } 
]); 

,然后由控制器调用它

var obj = { 
    ID:222, 
    resourceName:'ATable' 
} 
Request.put(obj).then(function(data){ 
    //check whats the data 
}) 

这是怎么了应该做 也许不是最好的方式,但应该工作

+0

现在我采取以下:'HTTP://localhost/agenda/bin/server.fcgi/REST/:@资源名称/ 26'其非常奇怪的 – Asqan

+0

名称必须相等,如果它的空可以是 – Erez

+0

名称'resourceName'在任何地方都是相等的? – Asqan