2016-07-12 2 views
0

У меня есть следующий завод, чтобы отправить запрос на сервер:Угловая ресурсов PUT Работа с полезной нагрузкой

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?noredirect1_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/: @ ResourceName/26' его очень странные – Asqan

+0

имена должны быть равны, а если его пустым может быть – Erez

+0

, то имя 'resourceName' равно везде? – Asqan

Смежные вопросы