2013-11-25 9 views
8

Ho una fabbrica che restituisce il $ risorsa per il mio articolo il modello:AngularJS risorse - metodo PUT non è sempre l'id

angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) { 
    return $resource('/api/v1/article/:articleId', { 
     articleId: '@_id', 
     _shop: window.user._shop 
    }, { 
     update: { 
      method: 'PUT' 
     } 
    }); 
}]); 

GET, POST e DELETE stanno lavorando bene, ma non l'aggiornamento (PUT) . Qui è il codice che uso:

Articles.update({articleId: '300000000000000000000001'}, function(article){ 
    console.log(article); 
}); 

Sta facendo questa richiesta:

PUT http://localhost:3000/api/v1/article?_shop=100000000000000000000001 

invece di:

PUT http://localhost:3000/api/v1/article/300000000000000000000001?_shop=100000000000000000000001 

Qualsiasi idea del perché il: parametro di articleId non è compilato quando si fa un aggiornamento ? Grazie!

+1

PUT dovrebbe inviare contenuto nella richiesta, non nell'URL! – Fals

+0

Grazie amici per la tua risposta! In realtà sta inviando l'articolo nei contenuti come dici tu. Immagino di aver commesso un errore quando ho pianificato l'API. – doobdargent

risposta

7

Come Fals menzionato nel commento, il parametro articleId era nel contenuto della richiesta. Quindi ho fatto un piccolo trucco per averlo anche sull'URI.

angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) { 
    return $resource('/api/v1/article/:articleId', { 
     articleId: '@_id', 
     _shop: window.user._shop 
    }, { 
     update: { 
      method: 'PUT', 
      params: { 
       articleId: "@articleId" 
      } 
     } 
    }); 
}]); 
+0

a causa di qualche errore qualche tempo fa, ho fatto un problema in git angolare, e hanno detto di non usare alcun parametro in questa parte: '{ articleId: '@_id', _shop: window.user._shop }, 'quando non vuoi renderli globalmente disponibili nella richiesta ... quando non lo imposti in un'altra richiesta, e nel tuo modello hai qualcosa di simile, scegli quel valore dal modello e il tuo url andrà wild – deadManN

+0

ancora oggi, sto scrivendo un altro servizio, e quando non li uso, invia? stringhe di query: | anziché... – deadManN

1

Ho avuto lo stesso problema, il problema qui è stato per la seguente riga:

articleId: '@_id', 

che la linea dovrebbe essere:

articleId: '@articleId', 

articleId ha bisogno di essere definito di nuovo.

Problemi correlati