2013-12-08 3 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' - это абстракция _on top_ of' $ http' для облегчения поиска REST и возврата равномерного запроса (и действия) интерфейса REST. –

+1

Если вам не нужны параметры в URL-адресе, не настраивайте их как параметры URL-адреса. $ resource отправит данные экземпляра как есть (поэтому ваши данные будут 'treeId', а не' tree_id'. –

ответ

6

Я думаю, вы не согласны с тем, как использовать $resource. Вы должны создать экземпляры $ resource, как если бы они были моделями, и установить атрибуты объекта, который вы хотите использовать POST.

С вашего 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().

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