Se si sta creando una nuova entità nel proprio archivio dati, si desidera utilizzare POST/salvare. Se si stanno aggiornando i dati associati a un'entità già esistente nel proprio archivio dati, si desidera utilizzare PUT/aggiornamento. La patch è solitamente riservata quando si desidera aggiornare solo un sottoinsieme dei dati dell'entità.
Guarda le RFC
Diverse applicazioni che si estendono Hypertext Transfer Protocol (HTTP) richiedono una funzione per fare modifica risorsa parziale. Il metodo PUT HTTP consente solo la sostituzione completa di un documento. Questa proposta aggiunge un nuovo metodo HTTP PATCH per modificare una risorsa HTTP esistente.
Fornire un ID con entrambe le operazioni PUT e PATCH. Non ne fornite uno con un'operazione POST.
Quando carichiamo le nostre forme angolari, di solito viene eseguito in due modi. Se il modulo viene caricato quando stiamo creando una nuova entità, non avremo un ID. Lo sapremo nel controller e chiameremo resource.save. Se forniamo il controller che carica il modulo con un ID utilizzato per estrarre i dati da un endpoint per compilare il modulo, ora abbiamo l'id che possiamo usare per eseguire le operazioni resource.update o resource.patch a seconda di quanto dell'entità stiamo aggiornando.
Ecco una funzione di esempio di salvataggio che gestisce sia le operazioni di aggiornamento che quelle di salvataggio. Qui controlliamo se un ID è stato fornito tramite il percorso prima di effettuare la chiamata alla risorsa.
angular.module('appModule').controller('ExampleCtrl',
['$scope', '$routeParams',
function($scope, $routeParams) {
$scope.saveForm = function() {
//Do input validation before you make a resource call
if ($routeParams.id) {
//call resource update since we have an id
}
else {
//call resource save since we don't have an id
}
};
}]);
Ecco l'esempio dalla documentazione angularjs:
Come creare una richiesta PUT personalizzato:
var app = angular.module('app', ['ngResource', 'ngRoute']);
// Some APIs expect a PUT request in the format URL/object/ID
// Here we are creating an 'update' method
app.factory('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
'update': { method:'PUT' }
});
}]);
// In our controller we get the ID from the URL using ngRoute and $routeParams
// We pass in $routeParams and our Notes factory along with $scope
app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
function($scope, $routeParams, Notes) {
// First get a note object from the factory
var note = Notes.get({ id:$routeParams.id });
$id = note.id;
// Now call update passing in the ID first then the object you are updating
Notes.update({ id:$id }, note);
// This will PUT /notes/ID with the note object in the request payload
}]);
non è chiaro quello che stai cercando. Se l'oggetto è nuovo (non ha id) il salvataggio sarà POST, se non è nuovo sarà messo PUT. Su quale parte stai cercando chiarimenti? – charlietfl
Questo è il tipo di informazioni che sto cercando. I documenti Angular per $ risorse non sono in qualche modo chiari su come aggiornare un articolo con nuovi dati. Sto cercando esempi su come strutturare il servizio e il controller che supporta un'operazione put. La mia comprensione finora è che devo essere esplicito quando inserisco $ update nel controller e cerco il servizio (ad esempio 'update': {method: 'PATCH'}). Stai dicendo che non ho bisogno dell'aggiornamento $ e dovrei usare solo $ risparmi come per i dati iniziali? – Kode